我正在运行Solaris,因此这可能特定于在Solaris上运行GCC。如果我使用GCC生成共享对象,然后在其上运行nm以查看未定义的符号,则始终会有对main的引用:
[624] | 0| 0|NOTY |GLOB |0 |UNDEF |main
如果我使用ld手动生成相同的共享对象,则不存在对main的引用。如果我在/ usr / lib中的系统库上运行nm,它们似乎都没有对main的引用。我只使用GCC编译共享库。
针对这些共享库编译的应用程序运行正常且没有错误。但我仍然不明白为什么首先提到main是有的。有线索吗?
答案 0 :(得分:3)
您忘记了-shared
链接命令行中的gcc
选项。
编辑:你在编译命令行上忘记了-fPIC
选项(导致链接时出现所有重定位错误)。
如果在所有编译行中仍然出现-fPIC
的重定位错误,那么您应该使用{重建您链接到的所有归档库(libtoast_datetime
,libtoast_assert
等) {1}}也是。