请教路神APUE源码编译
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
全部一次过编译,还学毛啊,代码要自己改改才适合学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述