【发布时间】:2014-03-20 00:13:34
【问题描述】:
我正在尝试执行以下操作:
gcc -Ilibconfig controller.c -o Controller libconfig/libconfig.a
但我得到的是:
In function `processConfigFile':
controller.c:(.text+0x10e): undefined reference to `config_init'
controller.c:(.text+0x132): undefined reference to `config_read_file'
controller.c:(.text+0x169): undefined reference to `config_destroy'
controller.c:(.text+0x188): undefined reference to `config_lookup_string'
controller.c:(.text+0x1e0): undefined reference to `config_lookup_string'
controller.c:(.text+0x269): undefined reference to `config_lookup_string'
controller.c:(.text+0x2cc): undefined reference to `config_lookup_string'
controller.c:(.text+0x317): undefined reference to `config_lookup_string'
controller.c:(.text+0x36e): undefined reference to `config_lookup'
controller.c:(.text+0x403): undefined reference to `config_setting_length'
controller.c:(.text+0x454): undefined reference to `config_setting_get_string_elem'
controller.c:(.text+0x4fa): undefined reference to `config_destroy'
collect2: error: ld returned 1 exit status
现在我可以理解链接器无法链接库,但是我已确保库位于文件之后,这在 OSX 上运行良好,我不知道为什么会这样。
如果有人可以帮忙,请。
谢谢
【问题讨论】:
-
切换命令行参数的顺序有帮助吗?即致电
gcc -Ilibconfig -o Controller libconfig/libconfig.a controller.c -
libconfig/libconfig.a是在 Linux 系统上从头开始重建的吗?尝试将 OSX 库链接到 Linux 可执行文件可能会有点不稳定......