【发布时间】:2011-10-21 12:18:40
【问题描述】:
我只是想在 OSX Lion 上写一个简单的 C 程序
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
用 gcc 编译
$ gcc hello.c
test.c:1:19: error: stdio.h: No such file or directory
test.c: In function ‘main’:
test.c:3: warning: incompatible implicit declaration of built-in function ‘printf’
好的...很好
$ gcc -I /Developer/SDKs/MacOSX10.6.sdk/usr/include
ld: library not found for -lcrt1.10.6.o
collect2: ld returned 1 exit status
什么?让我们看看...
$ gcc -I /Developer/SDKs/MacOSX10.6.sdk/usr/include -L/Developer/SDKs/MacOSX10.6.sdk/usr/lib test.c
$ ./a.out
hello world
终于!
这似乎需要付出很多努力才能让一个 hello world 正常工作,我如何让 gcc 默认在 MacOSX10.6.sdk 目录中找到库和头文件,就像在 linux 上一样?在 linux 上,我发现 ldd 和 ldconfig 非常有用,它们在 OSX 上似乎不存在......有没有等价物?在 OSX 上开发 C 语言还有哪些其他有用的工具?
是的,我知道 xcode 让这更容易,但假设我想使用 vim 和命令行来处理开源 c 项目。
【问题讨论】:
-
据我所知,您的第一次尝试应该有效。至少在我的机器上它确实可以工作。
-
我会尝试检查 xcode 做了什么,比如它设置了哪些环境变量以及它传递给 gcc 的哪些选项并将其复制到 makefile 中。这样,您只需执行
make和瞧。 -
@zneak 我认为它也可以,我隐约记得它以前工作过,但这是我升级到 OSX lion (10.7) 后第一次尝试编译任何简单的 C 程序
-
恐怕我不是 OSX 用户,但
gcc -v --help的某些输出可能对那些用户有所帮助。但基本上,我相信你已经猜到了,它看起来像是一个破坏(或设置不正确)的环境。 -
如果您希望其他人能够帮助您,请将“which gcc”的结果添加到其他人已经指出您应该提供的信息中。
标签: c macos development-environment