我正在使用GCC为ARM Linux编译共享库。这是我在CMakeLists.txt中的编译器选项:
sentences = []
for elem in root:
sentence = []
for w in elem:
sentence.append(w.text)
sentences.append(sentence)
我刚刚在反汇编程序中打开了生成的.so文件。我很失望地看到很多东西。它向我显示了所有内容的名称,包括我的所有内部类以及从未导出过的函数。甚至来自匿名命名空间的东西仍然存在。在反汇编程序的“导出”选项卡上,我只看到了实际导出的十几个函数(加上一些额外的函数:add_definitions( "-std=c++14 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wno-psabi -march=native -mfpu=neon" )
.init_proc
.term_proc
_edata
和{{ 1}})。
在Windows上,我只看到这些东西,如果我有一个PDB文件用于我正在拆卸的模块。但是我没有发送我的.PDB文件。
我对GCC也有同样的行为。
有没有办法告诉GCC停止在.so文件中包含调试信息(=每个函数的错位名称),并实际将这些内容编译成二进制地址?
答案 0 :(得分:1)
您需要在链接器标志中添加-Wl,--strip-debug
。