CFANS·镇宅神兽(58135482) 16:30:15
我入手了macbook air
非常路<[email protected]> 16:30:29
你入手前可以问我
CFANS·镇宅神兽(58135482) 16:30:33
结果想要编译APUE代码,用来学习
非常路<[email protected]> 16:30:38
我可以介绍较为便宜的水货
CFANS·镇宅神兽(58135482) 16:30:48
结果怎么都不行
非常路<[email protected]> 16:31:00
你的是第二版的教材吗?
CFANS·镇宅神兽(58135482) 16:31:09
嗯
非常路<[email protected]> 16:31:18
因为mac下不是标准的GCC
CFANS·镇宅神兽(58135482) 16:31:27
啊
CFANS·镇宅神兽(58135482) 16:31:33
那应该怎么样捏
CFANS·镇宅神兽(58135482) 16:31:47
装个ubuntu?
非常路<[email protected]> 16:31:51
是clang
非常路<[email protected]> 16:31:58
然后做了一个gcc的前端
CFANS·镇宅神兽(58135482) 16:32:07
。。
非常路<[email protected]> 16:32:08
关键是看什么错误
李斌.北界.upsilon<[email protected]> 16:32:20
mac不也有llvm么
CFANS·镇宅神兽(58135482) 16:32:28
fd_set未定义
非常路<[email protected]> 16:32:31
clang就是基于llvm的
非常路<[email protected]> 16:33:02
是大小写问题吧
非常路<[email protected]> 16:33:10
MAC是BSD风格
CFANS·镇宅神兽(58135482) 16:33:10
有一些库找不着
非常路<[email protected]> 16:33:33
这个没办法,你故意要调试一下
非常路<[email protected]> 16:33:36
估计
李斌.北界.upsilon<[email protected]> 16:33:42
苦逼学ruby on rails..
李斌.北界.upsilon<[email protected]> 16:33:44
唉
CFANS·镇宅神兽(58135482) 16:34:02
我还打算编译CSAPP的源码
CFANS·镇宅神兽(58135482) 16:34:11
估计都要歇菜了
非常路<[email protected]> 16:34:21
一般来说,这种代码不太可能有太大的平台依赖
非常路<[email protected]> 16:35:00
小小折腾肯定要有的..学习C语言是这样的
CFANS·镇宅神兽(58135482) 16:35:31
PS:大家觉得AIR好还是PRO好
非常路<[email protected]> 16:36:04
其实我觉得应该没问题才对
CFANS·镇宅神兽(58135482) 16:36:12
我觉得air的散热做的太牛了比PRO好很多,不过最近又觉得AIR没有PRO结实
非常路<[email protected]> 16:36:16
因为毕竟作者在darwin上测试过...
CFANS·镇宅神兽(58135482) 16:36:23
我也不知道呢
CFANS·镇宅神兽(58135482) 16:36:33
可能我比较小白吧
非常路<[email protected]> 16:36:39
估计还是因为clang的引入
非常路<[email protected]> 16:36:53
这东西引入进来肯定有一点兼容性问题
非常路<[email protected]> 16:37:28
但是也不可能有你说的这么大的兼容性问题..= =
CFANS·镇宅神兽(58135482) 16:37:59
我查了下,air在systype的输出macos
CFANS·镇宅神兽(58135482) 16:38:10
我就用macos去编译了
非常路<[email protected]> 16:38:23
http://www.apuebook.com/
CFANS·镇宅神兽(58135482) 16:38:29
本来用freebsd编译的
非常路<[email protected]> 16:38:35
你有没有去这里下载
CFANS·镇宅神兽(58135482) 16:38:46
就是在这里下的
非常路<[email protected]> 16:39:56
那我劝你一个一个编译
非常路<[email protected]> 16:41:02
要整体编译,应该需要调一下...
非常路<[email protected]> 16:41:07
我有时间帮你看看
CFANS·镇宅神兽(58135482) 16:41:19
好
Eric(390075887) 16:41:41
非常路<[email protected]> 17:07:24
刚刚试了一下
非常路<[email protected]> 17:07:26
编译通过了
非常路<[email protected]> 17:07:32
一个是路径的问题
非常路<[email protected]> 17:07:45
一个是32bit变成64bit的问题
CFANS·镇宅神兽(58135482) 17:07:57
啊
CFANS·镇宅神兽(58135482) 17:08:11
路神,怎么设置啊
非常路<[email protected]> 17:10:12
Make.defines.macos文件打开
非常路<[email protected]> 17:10:38
WKDIR=/Users/你的用户名/apue.2e
CFANS·镇宅神兽(58135482) 17:10:47
这个肯定改了
非常路<[email protected]> 17:10:59
修改完这个,把你的 apue.2e 扔到这个路径
非常路<[email protected]> 17:11:36
找到include/apue.h文件
非常路<[email protected]> 17:11:41
#if defined(SOLARIS)
#define _XOPEN_SOURCE 500 /* Single UNIX Specification, Version 2 for Solaris 9 */
#define CMSG_LEN(x) _CMSG_DATA_ALIGN(sizeof(struct cmsghdr)+(x))
#elif defined(MACOS) 加这行
#elif !defined(BSD)
#define _XOPEN_SOURCE 600 /* Single UNIX Specification, Version 3 */
#endif
非常路<[email protected]> 17:11:52
#elif defined(MACOS) 加这行
非常路<[email protected]> 17:12:08
加到这里,make clean之后make就搞定了
非常路<[email protected]> 17:12:19
这个目录就会有一个lib目录
CFANS·镇宅神兽(58135482) 17:14:05
32bit变64bit怎么说
非常路<[email protected]> 17:15:47
现在的LION 什么的
非常路<[email protected]> 17:15:51
都是纯64bit的
非常路<[email protected]> 17:16:01
这是一个大变化
非常路<[email protected]> 17:26:37
#elif defined(MACOS) 加这行
非常路<[email protected]> 17:26:42
没加?
CFANS·镇宅神兽(58135482) 17:26:46
加了
CFANS·镇宅神兽(58135482) 17:26:48
肯定
非常路<[email protected]> 17:26:55
加了要make clean
非常路<[email protected]> 17:27:03
清空之后,重新make
CFANS·镇宅神兽(58135482) 17:27:20
编译,我用的是make macos
CFANS·镇宅神兽(58135482) 17:27:33
你看是这样不
非常路<[email protected]> 17:27:38
恩,我用的直接make,也差不多
CFANS·镇宅神兽(58135482) 17:27:41
我肯定clean了
非常路<[email protected]> 17:28:02
那应该没问题
非常路<[email protected]> 17:28:22
#elif defined(MACOS) 之后换行,多加一行
非常路<[email protected]> 17:28:36
再试试make clean试试
非常路<[email protected]> 17:35:53
可以了?
CFANS·镇宅神兽(58135482) 17:38:29
好像搞定了
CFANS·镇宅神兽(58135482) 17:38:39
我写错代码了
非常路<[email protected]> 17:38:46
去 file目录
CFANS·镇宅神兽(58135482) 17:38:49
我多了一个!号了
非常路<[email protected]> 17:38:57
修改ls1.c
CFANS·镇宅神兽(58135482) 17:39:08
嗯哼?
非常路<[email protected]> 17:39:17
头文件修改成 ../include/apue.h
非常路<[email protected]> 17:39:40
然后gcc ls1.c ../lib/libapue.a
非常路<[email protected]> 17:39:53
就会有a.out文件 ./aout .
非常路<[email protected]> 17:39:58
就是ls .
非常路<[email protected]> 17:40:12
就说明搞定了
非常路<[email protected]> 17:40:58
初学还是一个一个代码编译较好..
CFANS·镇宅神兽(58135482) 17:42:04
搞定了
CFANS·镇宅神兽(58135482) 17:42:31
路神,你刚才传授的是单个源码的编译的方法嘛
非常路<[email protected]> 17:43:04
反正代码你要读
非常路<[email protected]> 17:43:13
一边读,一边编译试试呗
CFANS·镇宅神兽(58135482) 17:43:25
我觉得学这些东西最大的困难就是在于环境的配置
非常路<[email protected]> 17:44:00
libapue,主要是给你做一些代码的处理..
CFANS·镇宅神兽(58135482) 17:44:11
环境搞定了,其他东西就可以按图索骥
非常路<[email protected]> 17:44:12
比如错误处理,有一些简化的函数,都是一些辅助函数
非常路<[email protected]> 17:44:25
实质上最重要的还是ls1.c类似这样的代码
非常路<[email protected]> 17:44:49
这方面,我就不推荐他里面的那个mk
非常路<[email protected]> 17:45:09
全部一次过编译,还学毛啊,代码要自己改改才适合学习