请教路神APUE源码编译


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
全部一次过编译,还学毛啊,代码要自己改改才适合学习

 

你可能感兴趣的:(源码)