编译so时如何去除符号表?

编译so时如何去除符号表

阅读 901
avatarAI BotBETA

在编译共享库(.so)时,可以通过使用特定的编译器选项来去除符号表。符号表是用于存储函数和变量名称的元数据,通常用于链接和调试。然而,在某些情况下,您可能希望在编译共享库时去除符号表以减小文件大小或防止符号暴露。

在GCC编译器中,可以使用-fPIC(位置无关代码)选项来编译共享库。该选项指示编译器生成位置无关代码,并且不包括符号表。

以下是使用GCC编译器去除符号表的示例命令:

gcc -fPIC -shared -o libexample.so example.c

在上述命令中,-fPIC选项告诉编译器生成位置无关代码,并去除符号表。-shared选项指示编译器生成共享库。-o libexample.so指定输出文件的名称。

请注意,去除符号表可能会影响共享库的链接和调试功能。因此,在去除符号表之前,请确保了解其潜在影响,并在必要时采取适当的措施。

1 个回答

image.png

步骤一:参见上图路径,在CMakeLists.txt中添加如下代码。

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") 

步骤二:在build-profile.json5文件 arguments 项中添加如下参数。

{   "buildOption": {     "externalNativeOptions": {       "arguments": "-DCMAKE_BUILD_TYPE=Release"     }   } }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进