gpt4 book ai didi

c++ - 从共享库中删除嵌入的源文件名

转载 作者:行者123 更新时间:2023-11-30 02:56:20 25 4
gpt4 key购买 nike

当我从源文件“secret.cc”构建共享库“mylib.so”时,生成的共享对象包含源文件名:

... do_global_ctors_aux^@secret.cc^@__DTOR_END ...

但我不想向我图书馆的用户泄露该文件的名称(“secret.cc”)。有没有办法从共享对象中删除文件名信息,或者从一开始就阻止它被插入?

最佳答案

这很简单:不要让编译器从一开始就知道源文件的文件名。而不是

g++ -std=c++11 -O3 -Wall -c my_source.cc -o my_source.o

这样做:

cat my_source.cc | g++ -std=c++11 -O3 -Wall -c -x c++ - -o my_source.o

注意需要提供-x c++明确地,错误消息显然不再包含文件名并且还有一个额外的警告:当您的源包含相对包含时,即包含在引号中( #include "foo.hpp" )而不是尖括号( #include <foo.hpp> ),那些将不会由于编译器无法引用文件的目录,因此工作时间更长,它只能看到来自管道的字节流。

关于c++ - 从共享库中删除嵌入的源文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com