Gcc 隐藏来自包含的静态库的符号的可见性

2024-01-20

I have:

  1. 一个共享库,比如说libShared.so,其中包含一个类Bar,用一种方法int Bar::do(int d) const
  2. 一个静态库,比如说libStatic.a,其中包含一个类Foo,用一种方法int Foo::act(int a) const.

的代码为Bar是这样的:

//Bar.h
class __attribute__ ((visibility ("default"))) Bar
{
  private: 
    __attribute__ ((visibility ("hidden"))) int privateMethod(int x) const;
  public:
    Bar() {}
    int do(int d) const;
}

//Bar.cpp
#include "Bar.h"
#include "Foo.h"

int Bar::do(int d) const {
   Foo foo;
   int result = foo.act(d) + this->privateMethod(d);
   return result;
}

libShared.so是用标志编译的-f可见性=隐藏.

问题如下:我执行Linux命令nm -g -D -C --仅定义 libShared.so,结果是class Foo及其方法在外部可见libShared.so,尽管告诉编译器隐藏除标记为“公共”之外的所有内容(事实上​​,它们被标记为“T”nm).

我怎样才能避免这种情况?我想libShared.so不要公开来自其依赖项的符号。

Thanks


你需要编译libStatic.a还带有旗帜-fvisibility=hidden.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gcc 隐藏来自包含的静态库的符号的可见性 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 访问php中函数返回的数组

    我正在使用一个模板引擎 它可以将代码插入到我的网站中我想要的位置 我编写了一个函数来测试一些非常简单的东西 myfunction return this gt data a b true false 问题是 this gt data 是私有
  • 如何在phonegap中创建toast?

    如何使用phonegap cordova在android应用程序中创建toast Thanx 首先创建一个ToastPlugin java package com company plugins import org apache cord
  • 如果我从不对打开的文件流调用“close”会发生什么? [复制]

    这个问题在这里已经有答案了 以下是同一案例的代码 include
  • qmake 中的 debug_and_release 配置功能有什么优点?

    我只能看到未来的一个优点 我们能够发行make all commad 好吧 我不打电话make在我的开发人员生命中的任何阶段 我使用 Qt Creator 当我构建项目时 我希望它严格作为调试或发布 我想这是人们预期的行为 But debu
  • 使用 r 中的 gsub 删除模式

    我有一根绳子Project Change Request PCR HONDA DIGITAL PLATEFORM保存在supp matches and supp matches1包含字符串Project Change Request PCR
  • 我想将一个表中的行分配到另一个表中的行,这些行可以在 SQL oracle 中占用相同数量的行

    我正在尝试编写一个 SQL 查询 它将记录从一个表分配到另一个具有相同数量的表 在这个例子中我有两个表 Students and Teachers 我想将学生分配给每位老师 学生 亚当 班尼特 埃尔默 贾斯汀 路易斯 诺亚 杰克 老师 Le
  • 将照片保存到 iPhone 照片库中的自定义相册

    我正在尝试在 iPhone 的照片库中创建一个自定义相册 然后将我用相机拍摄的照片或从手机相机胶卷中选择的照片保存到该自定义相册中 我可以成功创建相册 但照片没有保存在那里 而是保存到模拟器的 已保存照片 相册中 我不知道如何判断UIIma
  • 后递增运算符在 for 循环中不递增[重复]

    这个问题在这里已经有答案了 我正在做一些关于 Java 的研究 发现这非常令人困惑 for int i 0 i lt 10 i i System err print hoo 这是永无休止的循环 有人有很好的解释为什么会发生这样的事情吗 fo
  • NoneType 错误 self.widget.insert

    我试图在我的应用程序中拥有一个输出框架 当我运行它时 我收到错误 NoneType object has no attribute insert on self widget insert end string 任何帮助 将不胜感激 imp
  • 将多个数据帧导出到 .csv 文件中

    我想使用循环将多个数据帧作为单独的 csv 文件导出到工作目录 而不是写出所有名称 Sample data frame employee lt c John Doe Peter Gynn Jolie Hope salary lt c 210
  • Git-跟踪远程分支

    我是 Mercurial 用户 我对远程分支的行为感到困惑 我有一个远程分支origin dev 我想在本地分支上复制它dev 我想要的是 每当我git pull 更改为origin dev被合并到dev 每当我git push 更改为de
  • clang 如何引导 C/C++ 代码优化?

    有人告诉我 clang 是一个像 gcc 一样工作的驱动程序 可以进行预处理 编译和链接工作 在编译和链接过程中 据我所知 实际上是llvm进行了优化 O1 O2 O3 Os flto 但我就是无法理解howllvm参与其中 看来编译源代码
  • jQuery 多个选择器,获取哪个选择器触发事件

    当处理具有多个选择器的事件时 例如 item a another item a click function e 是否可以确定哪个父选择器触发了该事件 是吗 item or another item 谢谢你 由于选择器可以是任何东西 因此您
  • 量角器 e2e 抛出 webdriver 未定义

    我的量角器一直在运行 直到几天前我开始遇到 Using the selenium server at http localhost 4444 wd hub UNCAUGHT EXCEPTION Error connect ECONNREFU
  • 在 Haskell 中动态构建列表理解

    我很好奇是否可以在 Haskell 中动态构建列表理解 举个例子 如果我有以下内容 all pows a a b b a y b z y lt take a 0 z lt take b 0 我得到了我所追求的 Main gt List so
  • hashCode 等于 Integer.MIN_VALUE 的 Java 字符串

    是否存在 hashCode 完全等于 Integer MIN VALUE 的已知 Java 字符串 为哈希表编写测试有助于避免在执行余数运算之前在哈希码上运行 Math Abs 的常见错误 理想情况下 该字符串仅包含 ASCII 字符 但我
  • 在mysql中,显示数据库;命令未列出我的所有数据库

    我可以使用 HeidiSQL 访问我的所有数据库 但是如果我转到 mysql exe 窗口并使用显示数据库 11 个中只有 2 个出现 这些都是 127 0 0 1 上的数据库 有什么想法吗 您正在登录 HeidiSQLroot 所以它向您
  • Docker 中的 ng build --prod 非常慢

    当我尝试在 docker 中构建 angular7 项目时 大约需要 40 分钟 需要40分钟的线路是 ng 构建 prod 92 块资产优化 TerserPlugin 我在同一台笔记本电脑上在 docker 外部运行了 ng build
  • 创建 vscode 主题时如何自定义命令调色板颜色和键绑定

    为自己创建一个 VSCode 主题 我喜欢目前的颜色配置 但是当我打开命令调色板时 它是 透视 的 因此很难阅读 设计主题时如何配置调色板 V1 36为命令调色板 快速打开面板添加了这两个颜色自定义 quickInput backgroun
  • Gcc 隐藏来自包含的静态库的符号的可见性

    I have 一个共享库 比如说libShared so 其中包含一个类Bar 用一种方法int Bar do int d const 一个静态库 比如说libStatic a 其中包含一个类Foo 用一种方法int Foo act int