【发布时间】:2011-02-07 14:49:43
【问题描述】:
我正在尝试使用 cygwin 编译适用于 os x 和 linux 的代码。但是,我发现 gcc 的参数顺序给出了意想不到的结果。
例如,以下失败:
gcc -std=gnu99 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -lintl -liconv -fgnu89-inline -fno-leading-underscore -o nb-learn.exe nb-learn.c
但以下工作:
gcc -std=gnu99 -fgnu89-inline -fno-leading-underscore -o nb-learn.exe nb-learn.c -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -lintl -liconv
有人能解释一下这是如何工作的吗?另外,我可以查看一些技术或代码来让 autoconf 根据平台更改参数顺序吗?
这是错误信息的前两行:
/cygdrive/c/Users/aischein/AppData/Local/Temp/cc9MvUsf.o:nb-learn.c:(.text+0x260): undefined reference to `_g_hash_table_size'
/cygdrive/c/Users/aischein/AppData/Local/Temp/cc9MvUsf.o:nb-learn.c:(.text+0x29c): undefined reference to `_g_hash_table_get_keys'
谢谢,
SetJmp (gcc 4.3.4)
【问题讨论】:
-
pkg-config --libs glib-2.0 --cflags glib-2.0的输出是什么? -
Laurynas,输出为:
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -lintl -liconv -
@SetJmp 第一种情况的错误信息是什么?
-
@Laurynas:我添加了一些错误信息(其余错误信息是类似符号错误)。另外,我用更明确的值替换了
pkg-config调用。 -
为什么需要
-fno-leading-underscore