C++ Clang什么时候为共享对象添加了可见性支持?
GCC在版本4.0中添加。我的产品中包含以下内容,可将共享对象的大小减少约1/3(1.5 MB):C++ Clang什么时候为共享对象添加了可见性支持?,c++,clang,visibility,C++,Clang,Visibility,GCC在版本4.0中添加。我的产品中包含以下内容,可将共享对象的大小减少约1/3(1.5 MB): 我想为叮当声添加一个类似的规则。Clang什么时候增加了可视性支持?它一直可用吗?确认它在3.3+中。我没有测试任何较低版本,但我愿意打赌它是存在的,并且一直存在。我已经测试了3.3、3.4、3.5、3.6和3.7 有关其他“新”属性的列表(适用于3.7),请参阅: 如您所见,变量“a”在第一张图片中导出,但在第二张图片中,我隐藏了它,它不再在符号表中。我继续隐藏最后一张图片中的函数,它们也不在
我想为叮当声添加一个类似的规则。Clang什么时候增加了可视性支持?它一直可用吗?确认它在3.3+中。我没有测试任何较低版本,但我愿意打赌它是存在的,并且一直存在。我已经测试了3.3、3.4、3.5、3.6和3.7 有关其他“新”属性的列表(适用于3.7),请参阅: 如您所见,变量“a”在第一张图片中导出,但在第二张图片中,我隐藏了它,它不再在符号表中。我继续隐藏最后一张图片中的函数,它们也不在符号表中 我认为这是一个信号,它的工作。在LinuxMintRebecca上测试,没有安装gcc、g++或mingw或其他任何东西。只有代码块、叮当声和llvm。在构建clang之后,我卸载了gcc和g++(以避免冲突和问题(我怀疑这会发生,但我很学究) 注意:我试图定义隐藏属性,但是没有 对于喜欢文本输出的用户:
kira@Kira ~/Desktop/shm/bin/Debug $ nm -gC liblibshm.so
0000000000200980 B __bss_start
w __cxa_finalize@@GLIBC_2.2.5
0000000000200980 D _edata
0000000000200988 B _end
0000000000000628 T _fini
w __gmon_start__
00000000000004b0 T _init
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
w _Jv_RegisterClasses
kira@Kira ~/Desktop/shm/bin/Debug $ clang++ --version
Ubuntu clang version 3.3-16ubuntu1 (branches/release_33) (based on LLVM 3.3)
Target: x86_64-pc-linux-gnu
Thread model: posix
kira@Kira ~/Desktop/shm/bin/Debug $
我不确定确切的时间,但我想它可能是在3.6或3.7中添加的。。我找不到“可见性”,但我找到了3.7的属性列表:不需要显示图片(很难阅读)。您可以显示纯文本,因为GCC和Clang都是命令行编译器。。很抱歉我将删除一些图片并添加一些文本输出。
kira@Kira ~/Desktop/shm/bin/Debug $ nm -gC liblibshm.so
0000000000200980 B __bss_start
w __cxa_finalize@@GLIBC_2.2.5
0000000000200980 D _edata
0000000000200988 B _end
0000000000000628 T _fini
w __gmon_start__
00000000000004b0 T _init
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
w _Jv_RegisterClasses
kira@Kira ~/Desktop/shm/bin/Debug $ clang++ --version
Ubuntu clang version 3.3-16ubuntu1 (branches/release_33) (based on LLVM 3.3)
Target: x86_64-pc-linux-gnu
Thread model: posix
kira@Kira ~/Desktop/shm/bin/Debug $