0

我正在运行 Solaris,因此这可能特定于在 Solaris 上运行 GCC。如果我使用 GCC 生成一个共享对象,然后在其上运行 nm 以查看未定义的符号,那么总会有对 main 的引用:

[624]     |         0|       0|NOTY |GLOB |0    |UNDEF  |main

如果我使用 ld 手动生成相同的共享对象,则对 main 的引用不存在。如果我在 /usr/lib 中的系统库上运行 nm,它们似乎都没有对 main 的引用。只有我自己用 GCC 编译的共享库。

针对这些共享库编译的应用程序运行良好且没有错误。但是我仍然不明白为什么首先要引用 main 。有什么线索吗?

4

1 回答 1

3

您忘记了链接命令行-shared中的选项。gcc

编辑:并且您忘记了-fPIC编译命令行上的选项(这会导致链接时出现所有重定位错误)。

如果您仍然在所有编译行上遇到重定位错误,那么您也应该重建您在 ( ,等) 中-fPIC链接的所有存档库。libtoast_datetimelibtoast_assert-fPIC

于 2009-10-16T18:16:42.120 回答