【问题标题】:Compiling a c application that links to a static library on AIX在 AIX 上编译链接到静态库的 c 应用程序
【发布时间】:2012-05-02 05:21:18
【问题描述】:

我正在尝试编译我的应用程序以链接到静态库(.a 文件)

我用来构建的命令是这样的:

gcc -DUNIX -maix32 -o Release/bin/testApp Release/obj/main.o -ltestLib

构建时出现以下错误:

ld: 0711-317 ERROR: Undefined symbol: .test
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

其中 test 是 libtestLib.a 中的一个方法

此外,如果我尝试使用动态库进行构建,那么它是成功的。

gcc -DUNIX -maix32 -o Release/bin/testApp Release/obj/main.o libtestLib.so

你能看出我哪里出错了吗?

【问题讨论】:

  • 为什么不试试上面提到的选项(-bloadmap 或 -bnoquiet),或者发布源代码?
  • 当我尝试这些选项时,它无法识别它们。
  • 请注意,如果您想在gcc 命令行上将这些选项传递给链接器,您可能需要使用-Wl,-bloadmap-Wl,-bnoquiet

标签: c gcc aix static-linking .a


【解决方案1】:

您能否尝试指定存档文件的路径,而不是-ltestLib

gcc -DUNIX -maix32 /path/to/testLib.a -o Release/bin/testApp Release/obj/main.o

【讨论】:

  • 是的,遗憾的是这同样失败了
  • 可以运行dump -g testLib.a 来验证符号是否存在
猜你喜欢
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
相关资源
最近更新 更多