强制包含不导出任何符号的静态库对象文件(GCC/iPhone)

Ric*_*ney 4 iphone linker gcc static-libraries ios

我正在创建一个用于iPhone应用程序的静态库.它包含许多不导出符号的源文件,它们只是实例化一个类的静态实例,然后在其构造函数中运行一些代码,在其他地方使用中央管理器类注册各种事物.当代码构建为标准iPhone应用程序的一部分时,这一切都可以正常工作,但当它被分成静态库时,这些文件不会成为最终的应用程序二进制文件,因此它们包含的私有类实例的构造函数不要跑,这会引起问题.我已经关闭了每个构建选项来处理静态库构建和最终应用程序构建的死剥离等.

我刚刚在Metrowerks编译器上遇到过这个问题,但是在那个实例中,即使代码被构建到没有任何中间库的单个应用程序中,也会发生这种情况.解决方案非常简单:只需__declspec(force_export)在私有类实例上使用,一切都很好.

是否有GCC/iPhone的等价物?我正在使用Xcode 3.1.4和GCC 4.2并针对iPhone OS 3.1.或者有一些方法告诉应用程序链接静态库中的每个目标文件,无论它是否被显式引用?我已经确认使用ar完整的目标文件集进入静态库.

提前致谢.

F'x*_*F'x 5

我认为您正在寻找的选项是-all_load:

   -all_load
       Loads all members of static archive libraries.  See man ld(1) for
       more information.
Run Code Online (Sandbox Code Playgroud)