博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
请教路神APUE源码编译
阅读量:6554 次
发布时间:2019-06-24

本文共 4763 字,大约阅读时间需要 15 分钟。

CFANS·镇宅神兽(58135482) 16:30:15
我入手了macbook air

非常路<luzte@qq.com> 16:30:29

你入手前可以问我

CFANS·镇宅神兽(58135482) 16:30:33

结果想要编译APUE代码,用来学习

非常路<luzte@qq.com> 16:30:38

我可以介绍较为便宜的水货

CFANS·镇宅神兽(58135482) 16:30:48

结果怎么都不行

非常路<luzte@qq.com> 16:31:00

你的是第二版的教材吗?

CFANS·镇宅神兽(58135482) 16:31:09

非常路<luzte@qq.com> 16:31:18

因为mac下不是标准的GCC

CFANS·镇宅神兽(58135482) 16:31:27

CFANS·镇宅神兽(58135482) 16:31:33

那应该怎么样捏

CFANS·镇宅神兽(58135482) 16:31:47

装个ubuntu?

非常路<luzte@qq.com> 16:31:51

是clang

非常路<luzte@qq.com> 16:31:58

然后做了一个gcc的前端

CFANS·镇宅神兽(58135482) 16:32:07

。。

非常路<luzte@qq.com> 16:32:08

关键是看什么错误

李斌.北界.upsilon<ben.upsilon@gmail.com> 16:32:20

mac不也有llvm么

CFANS·镇宅神兽(58135482) 16:32:28

fd_set未定义

非常路<luzte@qq.com> 16:32:31

clang就是基于llvm的

非常路<luzte@qq.com> 16:33:02

是大小写问题吧

非常路<luzte@qq.com> 16:33:10

MAC是BSD风格

CFANS·镇宅神兽(58135482) 16:33:10

有一些库找不着

非常路<luzte@qq.com> 16:33:33

这个没办法,你故意要调试一下

非常路<luzte@qq.com> 16:33:36

估计

李斌.北界.upsilon<ben.upsilon@gmail.com> 16:33:42

苦逼学ruby on rails..

李斌.北界.upsilon<ben.upsilon@gmail.com> 16:33:44

CFANS·镇宅神兽(58135482) 16:34:02

我还打算编译CSAPP的源码

CFANS·镇宅神兽(58135482) 16:34:11

估计都要歇菜了

非常路<luzte@qq.com> 16:34:21

一般来说,这种代码不太可能有太大的平台依赖

非常路<luzte@qq.com> 16:35:00

小小折腾肯定要有的..学习C语言是这样的

CFANS·镇宅神兽(58135482) 16:35:31

PS:大家觉得AIR好还是PRO好

非常路<luzte@qq.com> 16:36:04

其实我觉得应该没问题才对

CFANS·镇宅神兽(58135482) 16:36:12

我觉得air的散热做的太牛了比PRO好很多,不过最近又觉得AIR没有PRO结实

非常路<luzte@qq.com> 16:36:16

因为毕竟作者在darwin上测试过...

CFANS·镇宅神兽(58135482) 16:36:23

我也不知道呢

CFANS·镇宅神兽(58135482) 16:36:33

可能我比较小白吧

非常路<luzte@qq.com> 16:36:39

估计还是因为clang的引入

非常路<luzte@qq.com> 16:36:53

这东西引入进来肯定有一点兼容性问题

非常路<luzte@qq.com> 16:37:28

但是也不可能有你说的这么大的兼容性问题..= =

CFANS·镇宅神兽(58135482) 16:37:59

我查了下,air在systype的输出macos

CFANS·镇宅神兽(58135482) 16:38:10

我就用macos去编译了

非常路<luzte@qq.com> 16:38:23

http://www.apuebook.com/

CFANS·镇宅神兽(58135482) 16:38:29

本来用freebsd编译的

非常路<luzte@qq.com> 16:38:35

你有没有去这里下载

CFANS·镇宅神兽(58135482) 16:38:46

就是在这里下的

非常路<luzte@qq.com> 16:39:56

那我劝你一个一个编译

非常路<luzte@qq.com> 16:41:02

要整体编译,应该需要调一下...

非常路<luzte@qq.com> 16:41:07

我有时间帮你看看

CFANS·镇宅神兽(58135482) 16:41:19

Eric(390075887) 16:41:41

非常路<luzte@qq.com> 17:07:24

刚刚试了一下

非常路<luzte@qq.com> 17:07:26

编译通过了

非常路<luzte@qq.com> 17:07:32

一个是路径的问题

非常路<luzte@qq.com> 17:07:45

一个是32bit变成64bit的问题

CFANS·镇宅神兽(58135482) 17:07:57

CFANS·镇宅神兽(58135482) 17:08:11

路神,怎么设置啊

非常路<luzte@qq.com> 17:10:12

Make.defines.macos文件打开

非常路<luzte@qq.com> 17:10:38

WKDIR=/Users/你的用户名/apue.2e

CFANS·镇宅神兽(58135482) 17:10:47

这个肯定改了

非常路<luzte@qq.com> 17:10:59

修改完这个,把你的 apue.2e 扔到这个路径

非常路<luzte@qq.com> 17:11:36

找到include/apue.h文件

非常路<luzte@qq.com> 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

非常路<luzte@qq.com> 17:11:52

#elif defined(MACOS) 加这行

非常路<luzte@qq.com> 17:12:08

加到这里,make clean之后make就搞定了

非常路<luzte@qq.com> 17:12:19

这个目录就会有一个lib目录

CFANS·镇宅神兽(58135482) 17:14:05

32bit变64bit怎么说

非常路<luzte@qq.com> 17:15:47

现在的LION 什么的

非常路<luzte@qq.com> 17:15:51

都是纯64bit的

非常路<luzte@qq.com> 17:16:01

这是一个大变化

非常路<luzte@qq.com> 17:26:37
#elif defined(MACOS) 加这行
非常路<luzte@qq.com> 17:26:42
没加?

CFANS·镇宅神兽(58135482) 17:26:46

加了

CFANS·镇宅神兽(58135482) 17:26:48

肯定

非常路<luzte@qq.com> 17:26:55

加了要make clean

非常路<luzte@qq.com> 17:27:03

清空之后,重新make

CFANS·镇宅神兽(58135482) 17:27:20

编译,我用的是make macos

CFANS·镇宅神兽(58135482) 17:27:33

你看是这样不

非常路<luzte@qq.com> 17:27:38

恩,我用的直接make,也差不多

CFANS·镇宅神兽(58135482) 17:27:41

我肯定clean了

非常路<luzte@qq.com> 17:28:02

那应该没问题

非常路<luzte@qq.com> 17:28:22

#elif defined(MACOS) 之后换行,多加一行

非常路<luzte@qq.com> 17:28:36

再试试make clean试试

非常路<luzte@qq.com> 17:35:53

可以了?

CFANS·镇宅神兽(58135482) 17:38:29

好像搞定了

CFANS·镇宅神兽(58135482) 17:38:39

我写错代码了

非常路<luzte@qq.com> 17:38:46

去 file目录

CFANS·镇宅神兽(58135482) 17:38:49

我多了一个!号了

非常路<luzte@qq.com> 17:38:57

修改ls1.c

CFANS·镇宅神兽(58135482) 17:39:08

嗯哼?

非常路<luzte@qq.com> 17:39:17

头文件修改成 ../include/apue.h

非常路<luzte@qq.com> 17:39:40

然后gcc ls1.c ../lib/libapue.a

非常路<luzte@qq.com> 17:39:53

就会有a.out文件 ./aout .

非常路<luzte@qq.com> 17:39:58

就是ls .

非常路<luzte@qq.com> 17:40:12

就说明搞定了

非常路<luzte@qq.com> 17:40:58

初学还是一个一个代码编译较好..

CFANS·镇宅神兽(58135482) 17:42:04

搞定了

CFANS·镇宅神兽(58135482) 17:42:31

路神,你刚才传授的是单个源码的编译的方法嘛

非常路<luzte@qq.com> 17:43:04

反正代码你要读

非常路<luzte@qq.com> 17:43:13

一边读,一边编译试试呗

CFANS·镇宅神兽(58135482) 17:43:25

我觉得学这些东西最大的困难就是在于环境的配置

非常路<luzte@qq.com> 17:44:00

libapue,主要是给你做一些代码的处理..

CFANS·镇宅神兽(58135482) 17:44:11

环境搞定了,其他东西就可以按图索骥

非常路<luzte@qq.com> 17:44:12

比如错误处理,有一些简化的函数,都是一些辅助函数

非常路<luzte@qq.com> 17:44:25

实质上最重要的还是ls1.c类似这样的代码

非常路<luzte@qq.com> 17:44:49

这方面,我就不推荐他里面的那个mk

非常路<luzte@qq.com> 17:45:09

全部一次过编译,还学毛啊,代码要自己改改才适合学习

 

转载于:https://www.cnblogs.com/code-style/archive/2012/09/15/2687106.html

你可能感兴趣的文章
Map集合案例
查看>>
《FPGA全程进阶---实战演练》第十一章 VGA五彩缤纷
查看>>
C# for循环①护栏长度 ②广场砖面积 ③判断闰年平年
查看>>
mysql数据库中,查看数据库的字符集(所有库的字符集或者某个特定库的字符集)...
查看>>
LintCode刷题——打劫房屋I、II、III
查看>>
第七次课程作业
查看>>
C++ 文本查询2.0(逻辑查询)
查看>>
Objective-C学习总结-13协议1
查看>>
web学习方向
查看>>
寒假训练营第四次作业
查看>>
SQLServer 维护脚本分享(05)内存(Memory)
查看>>
A*算法实现
查看>>
第一周 从C走进C++ 002 命令行参数
查看>>
【java】itext pdf 分页
查看>>
看看这个电脑的配置
查看>>
[转]【NoSQL】NoSQL入门级资料整理(CAP原理、最终一致性)
查看>>
RequireJS进阶(二)
查看>>
.NET中数组的隐秘特性
查看>>
我设计的网站的分布式架构
查看>>
python基础学习笔记(十三)
查看>>