作者TsaoCCFGOGO (书念累时,就算数学吧)
看板PttCurrent
标题Re: [心得] PttBBS 在 FreeBSD 12 编译可能issue
时间Fri Mar 6 21:23:09 2020
※ 引述《holishing ( )》之铭言:
: 之前在 FreeBSD 12-CURRENT 测试时遇到的,
: 最近 Release 出来後还没再测试过,仅供如果编译时遇到相关错误的参考。
: ===
: https://github.com/freebsd/freebsd/commit/da9d8a0
: https://svnweb.freebsd.org/base/head/sys/sys/sem.h?revision=330299&view=markup
: 除非还要另外再定义 _WANT_SEMUN
: 不然就不会认 union semun 了
: 所以...再看看
: 如果 12 release 之後还是这样的话
: https://github.com/ptt/pttbbs/blob/master/common/bbs/passwd.c#L43
: 可能也要小小修正一下了
早点看到你这篇就好了,我找解法找好久XDD
这几天在 FreeBSD 12.1-RELEASE 下编译
还是有这个问题
除了你这边提到的
#define _WANT_SEMUN
这个解法以外,
其实在FreeBSD 的 semctl(2) manpage 里有说到
"Non-portable software may define _WANT_SEMUN before including sys/sem.h
to use the system definition of union semun."
这个 union semun 如果不考虑可移植性的话可以
#define _WANT_SEMUN
用系统的定义
但是其实在 pttbbs source code 里面已经定义了这个 union
在 common/bbs/passwd.c line 44
"
#if !defined( __FreeBSD__ ) && !__DARWIN_UNIX03
#include <sys/sem.h>
union semun {
int val; /* value for SETVAL */
struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
unsigned short *array; /* array for GETALL & SETALL */
struct seminfo *__buf; /* buffer for IPC_INFO */
};
#endif
"
我只要把这段 #if 跟 #endif comment 掉也能编译过
接下来就是要研究要用哪个 union semun 的定义比较符合原本的需求
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.133.113.16 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PttCurrent/M.1583500991.A.818.html
1F:推 holishing: 推回馈 03/07 02:13
2F:→ TsaoCCFGOGO: 我想把Ptt改成UTF-8 only,看起来是漫漫长路 03/07 15:38
3F:→ TsaoCCFGOGO: 程式功力太差,还在努力学习 03/07 15:39
4F:→ TsaoCCFGOGO: 还有一个小问题就不另发文了 03/07 17:33
5F:→ TsaoCCFGOGO: pttbbs.mk里面似乎抓不到clang设定,等我改出来 03/07 17:34
6F:→ TsaoCCFGOGO: 再另外发一篇 03/07 17:34
7F:→ TsaoCCFGOGO: (FreeBSD 12.1-R跟Ubuntu 19.10都测试过) 03/07 17:36
8F:→ holishing: 我也有遇到类似问题...就某天预设就变 gcc @@ 03/09 21:44
9F:→ TsaoCCFGOGO: Makefile写法问题,等我都弄清楚了再开一篇文 03/10 02:03
10F:→ TsaoCCFGOGO: 把CLANG!=跟CCACHE!=那两行的type用which换掉, 03/11 02:18
11F:→ TsaoCCFGOGO: 看起来没什麽问题,详解等我有空QQ 03/11 02:18
12F:推 holishing: 好啊!感谢分享,或是有空的时候可以直接发 PR 这样XD 03/23 22:49
13F:→ TsaoCCFGOGO: 好,我再试试看XD 03/28 03:44