首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clang什么时候增加了对共享对象的可见性支持?

Clang什么时候增加了对共享对象的可见性支持?
EN

Stack Overflow用户
提问于 2015-03-01 07:28:54
回答 1查看 1.1K关注 0票数 1

GCC在4.0版中添加了能见度支持。我的make中有以下内容,它将共享对象的大小减少了大约1/3 (1.5 MB):

代码语言:javascript
复制
GCC40_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version ([4-9])")
ifeq ($(GCC40_OR_LATER),1)
  CXXFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
endif

我想为Clang添加一个类似的规则。Clang什么时候增加了可见性支持?一直都有吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-01 08:32:38

证实是在3.3+。我没有测试任何较低的版本,但我愿意打赌,它在那里,并一直在那里。我测试了3.3,3.4,3.5,3.6和3.7。

有关其他“新”属性的列表(关于3.7),请参见:http://clang.llvm.org/docs/AttributeReference.html

正如您所看到的,变量"a“是在第一张图片中导出的,但是在第二张图片中,我隐藏了它,它已经不在符号表中了。我继续在最后一张图片中隐藏函数,它们也不在符号表中。

我把这看作是它起作用的标志。在上进行了测试,没有安装gcc或g++或Mint或其他任何设备。只是代码块,clang和llvm。我已经卸载gcc和g++后,建立了clang (以避免冲突和问题,如果出现任何我怀疑会发生,但我是学究)。

注:我试过#define the hidden attribute,但没有雪茄。

对于那些喜欢文本输出的人:

代码语言:javascript
复制
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 $ 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28791189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档