gpt4 book ai didi

c - 构建共享库时隐藏符号可见性

转载 作者:行者123 更新时间:2023-11-30 15:29:07 25 4
gpt4 key购买 nike

我有多个对象文件(比如说obj1.oobj2.o),我用它们构建一个共享库(libapp.so)。所有关联的对象在构建时都没有隐藏可见性标志,但在最终的so(libapp.so,见下文)中,如果我使用可见性标志作为hidden,它会隐藏外部库使用的所有内部函数吗?

gcc -shared -fPIC -fvisibility=hidden obj1.o obj2.o -o libapp.so
<小时/>

编辑:

正如 wRAR 提到的,我尝试使用版本脚本来隐藏最终共享库上的所有符号。版本脚本的编写方式如下-

文件:libapp.version

{
local: *;
};

我将我的共享库构建为:

gcc -shared -fPIC obj1.o obj2.o -o libapp.so -Wl,--version-script=libapp.version

即使将所有符号都设置为本地符号,我仍然可以在 nm 中看到所有符号都存在。我在这里做错了什么?

最佳答案

-fvisibility 是编译时选项,因此它在链接时不起作用。您可以为ld编写版本脚本以在链接时隐藏符号。

关于c - 构建共享库时隐藏符号可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26339280/

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