__attribute__((visibility("default")))

2023-11-12

设置符号可见性

vis.c


#include <stdio.h>
#include <stdlib.h>

__attribute ((visibility("default"))) void not_hidden ()
{
    printf("exported symbol\n");
}

void is_hidden ()
{
    printf("hidden one\n");
}

想要做的是,第一个函数符号可以被导出,第二个被隐藏。
先编译成一个动态库,使用到属性-fvisibility

gcc -shared -fPIC -o libvis.so -fvisibility=hidden vis.c

$ readelf -s libvis.so | grep hidd
    11: 00000000000006a0    19 FUNC    GLOBAL DEFAULT   12 not_hidden
    40: 00000000000006b3    19 FUNC    LOCAL  DEFAULT   12 is_hidden
    55: 00000000000006a0    19 FUNC    GLOBAL DEFAULT   12 not_hidden
 

visMain.c

int main()
{
        not_hidden();
        is_hidden();
        return 0;
}

$ gcc -o visMain.out visMain.c -L ./ -lvis
visMain.c: In function ‘main’:
visMain.c:3:2: warning: implicit declaration of function ‘not_hidden’ [-Wimplicit-function-declaration]
  not_hidden();
  ^
visMain.c:4:2: warning: implicit declaration of function ‘is_hidden’ [-Wimplicit-function-declaration]
  is_hidden();
  ^
/tmp/cc1hSyEJ.o: In function `main':
visMain.c:(.text+0x14): undefined reference to `is_hidden'
collect2: error: ld returned 1 exit status

可见性为LOCAL 了,所以无法链接

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

__attribute__((visibility("default"))) 的相关文章

  • win10无法登陆到你的账户解决方法

    进入win10系统登录的时候很多用户遇到了win10无法登陆到你的账户情况 这种问题都会需要来进行重新设置 来看看怎么解决这个无法登录问题吧 更多重装系统教程尽在小白系统重装官网 1 首先我们需要进入win10系统安全模式 安全模式进入方法
  • 【IIOT】欧姆龙PLC数采之NX/NJ系列

    IIOT 欧姆龙PLC数采之NX NJ系列 前言 一 车间级数采系统架构 二 欧姆龙PLC介绍 三 NX NJ系列产品说明 3 1 CPU规格 3 2 内部寄存器 3 3 支持协议 四 数采方案 4 1 选择协议 4 2 硬件架构 1 确认
  • 防页面url缓存

    在开发中 发现当我们访问一个地址之后 包括ajax访问 打开检测会发现第二次请求没有去服务器端 直接走的浏览器自身的缓存 如何避免这样的情况呢 通过在地址栏后拼一串随机数 即可 例如 XXXX t 生成的随机数 随机数可以跟时间戳 或者随机
  • Vue+el-table+sortable踩坑

    1 拖拽后 同页面切换tab 表格数据更新 表头显示顺序有误 拖拽 1 2 3 2 1 3 更新后为 5 4 6 应为 4 5 6 原代码
  • Kendo UI开发教程(26): 单页面应用(四) Layout

    Layout继承自View 可以用来包含其它的View或是Layout 下面例子使用Layout来显示一个View 1
  • matplotlib绘制直方图

    统计250部电影的时长分布状态 from matplotlib import pyplot as plt from matplotlib import font manager time 131 98 125 131 124 139 131
  • MySQL之 表

    表是关于特定实体的数据集合 这也是关系型数据库模型的核心 1索引组织表 在InnoDB存储引擎中 每张表都有一个主键 Primary Key 如果创建表时没有显示定义主键 则会按照如下方式创建主键 存在非空的唯一索引 Unique NOT
  • html回到顶部的特效

    html代码 div class istop a href self 返回顶部 a div js代码 function istop click function html body animate scrollTop 0 500
  • 通过GPIO探究STM32F10x的寄存器与函数_2021-04-24

    通过GPIO探究STM32F10x的寄存器与函数 将地址用标识符定义出来可以增加可读性 定义引脚 define GPIO PIN 0 uint16 t 0x0001 define GPIO PIN 1 uint16 t 0x0002 def
  • ubuntu关于openssl中缺少crypto库

    官网下载openssl库 https www openssl org source old 1使用tar命令解压至指定目录 sudo tar xzvf openssl 1 1 0e tar gz C filepath 文件路径 2进入解压后
  • 我的2021秋招记录

    普通一本 本硕 嵌入式软件开发岗 收到小米 联发科 浙江大华 汇川技术 英威腾 上能电气 富士康 格力offer 最高28w 最低减半 以下开始讲述一些我找工作的经验 希望对大家有帮助 觉得有帮助的 记得点个赞关注走一波 谢谢大家 一 简历
  • EXCEl中关于Cell中的各种值的类型判断

    private static String getCellValue XSSFCell cell DecimalFormat df new DecimalFormat String cellValue null if cell null r
  • python编写小游戏详细教程,python编写小游戏的代码

    大家好 本文将围绕如何用python编写一个简单的小游戏展开说明 python编写小游戏详细教程是一个很多人都想弄明白的事情 想搞清楚python编写小游戏的代码需要先了解以下几个事情 一 开始制作小游戏 先开始做一个简单的猜数字小游戏火车
  • Vue3 路由页面切换动画 animate.css

    animate css官网 可以通过以下的内容 来获取自己想要的动态切换样式 1 路由动画transition或者在组件中控制使用animate 安装 npm install animate css 在main ts中引入 import a
  • 万字长文——互联网广告到底是如何运行的?

    自互联网诞生之后 广告这个历史悠久的行业就被永远地改变 卫夕一直致力于普及互联网广告的基本逻辑 始终认为这是一个对行业意义的事 为此我做了一个40分钟的视频分享给大家 卫夕希望这个科普课程视频可以达到两个目标 第一 即便是没有从事过广告的小
  • 自动化代码审计工具源伞科技Pinpoint

    自动化代码审计工具源伞科技Pinpoint介绍 源伞科技Pinpoint 源伞科技2016年由香港科大团队创立 立足于国际水平的学术研究积累 秉承工匠精神 致力用最先进的自动程序分析技术保障软件质量 为企业提供以人工智能为基础的工业级程序缺
  • 虚拟聊天记录生成器,微信对话视频生成器,让微信对话以视频形式呈现!

    微信对话视频生成器是一款功能强大的工具 可以将微信聊天记录转化成生动有趣的视频 它不仅可以让用户在朋友圈或社交平台上展示自己的聊天趣事 还可以用于制作个性化的视频礼物 接下来 我们将介绍该工具的主要功能和解决问题的案例 输入聊天记录内容 直
  • C++学习日记和心得(一)(新手帖,高手勿笑)

    前言 我之前三年也学过其他语言 VB pascal 都不是非常主流 但有一定程序学习的基础 没学过程序的孩子也不要伤心 只要认认真真的学习还是可以学会的 我也是刚开始学C 所以希望大家跟我一同从0开始学习C 如果对我有一些疑问和批评欢迎提出

随机推荐

  • 【华为OD机试python】阿里巴巴找黄金宝箱(V)【2023 B卷

    题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面贴有一个数字 阿里巴巴念出一个咒语数字k k
  • 【100%通过率 】租车骑绿岛【华为OD机试 真题c++/java/python 2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 部门组织绿岛骑行团建活动 租用公共双人自行车 每辆自行车最多坐两人 最大载重M 给出部门每个人的体重 请问最多需要租用多少双人自行车 输入描述
  • 什么是向上管理?意义?

    今天聊一个职场热词 向上管理 这两天刷到字节跳动的招聘官网 他们在阐述 坦诚清晰 的字节范儿时 提到了一句话 实事求是 暴露问题 反对 向上管理 这一点很有意思 因为 向上管理 几乎是职场入门必修课 所以我试着在字节跳动的文化语境中 来理解
  • 使用gcov+lcov工具可视化代码分支覆盖率数据

    通过一个简单的例子 来展示如何使用gcov lcov来生成代码分支覆盖率数据并将其图形化显示 假设有一个main cpp文件 1 首先使用gcc编译该文件 g main cpp fprofile arcs ftest coverage l
  • CUDA代码笔记(二) cudaOpenMP

    cudaOpenMP项目展示了如何在cuda项目中运用openmp技术 该项目位于cuda samples文件夹下的0 Simple cudaOpenMP文件夹下 在正式开始剖析代码之前 让我们先来了解一下openmp的背景知识 OpenM
  • Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】

    Docker进阶 mysql 主从复制 redis集群3主3从 扩缩容案例 一 Docker常规软件安装 1 1 docker 安装 tomcat 默认最新版 1 2 docker 指定安装 tomcat8 0 1 3 docker 安装
  • WinLicense&Themida 2019革命性升级,软件加密后破解难度突破天际

    随着软件普及程度 互联网技术的发展 以及正版软件购买用户数量和软件版本的增加 软件的保护变得越来越重要 而我们常见的软件保护方式有软件授权和软件加密 Oreans是西班牙非常著名的软件系统保护公司 提供代码混淆 版本控制等多种工具 其中Wi
  • CMake编译QT项目,解决undefined reference to vtable问题

    项目布局应为 src文件夹中存放cpp文件和包含了继承了QObject类的class的头文件 include文件夹中存放其他头文件 在项目文件夹中新建CMakeLists txt文件 新建build文件夹和lib文件夹 此时项目文件夹的结构
  • 通过maven配置不同的开发环境

    前言 项目有开发 测试 生产至少有这三个环境 所需要的配置信息肯定不一样 比如需要开发环境的时候 注解掉测试和生产的配置信息 打开开发的配置信息 后来工作接触到新项目 发现是通过maven来控制加载不同的配置文件 非常方便 所以这篇博客学习
  • 不一样的命令提示符、 PowerShell、windows terminal

    展示图片 怎么操作 1 打开Microsoft Store 软件商店 搜索windows terminal 2 安装即可 3 点击windows 最近添加windows terminal 4 点击设置 gt 默认值 gt 外观 5 滑到最底
  • 爬虫技术可以分析数据吗?

    目前在不少大数据团队中 数据分析和数据挖掘工程师通常都有明确的分工 数据采集往往并不是数据分析和挖掘工程师的任务 通常做爬虫的是大数据应用开发程序员或者是数据采集工程师 使用爬虫工具 的工作任务 但是对于数据分析工程师来说 掌握爬虫技术也是
  • 【RF时序预测】基于随机森林算法的时间序列预测附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 随机森林算法是一种集成学习方法 通过组合多个决策树来进行分类和回归 算法的原理如下
  • c++ 实现贪吃蛇(含技术难点解析和完整代码)

    文章目录 0 参考资料 1 技术难点 1 1 关于光标的移动 1 2 关于蛇的移动 1 2 1 从键盘上读取输入 1 2 2 蛇的移动 1 3 食物的生成 2 完整代码 0 参考资料 借鉴了这位大佬的博客及代码 在其基础上进行了修改 特此鸣
  • Antd Pro新增表格页面(二)

    前言 承接上一篇博客Ant Design Pro 新增一个表格页面 一 继续对index tsx进行修改 请求相关修改 复制过来的index tsx文件中的请求都是rule的增删查改 将其修改为前文已经写好的接口请求 import rule
  • VUE利用el-upload实现文件上传的功能,后端获取文件数据

    vue点击组件弹出窗口 span class tool btn i class table tool btn add icon i 批量新增 span 在方法中定义一个控制器 export default data return files
  • PTA---C++实现,定义抽象类Person、派生类Student和类Teacher

    问题描述 设计抽象类Person 派生出具体类 学生类Student和教师类Teacher 创建若干不同类对象后并在主方法中测试 数据成员定义 Person ID 姓名 生日 Student 专业 成绩 Teacher 职称 工资 带参构造
  • 贝叶斯定理及其Matlab程序设计

    目录 1 贝叶斯定理介绍 2 贝叶斯定理的Matlab代码实现 3 贝叶斯定理的C语言代码实现 4 贝叶斯定理的应用实例分析 1 贝叶斯定理介绍 贝叶斯定理 Bayes theorem 又称贝叶斯法则或贝氏定理 是概率论与统计学的基本定理之
  • OpenStack企业级实战

    一 环境初始化 1 CentOS7一键安装OpenStack 安装参考 Install RDO 前提条件 准备一个8g或16g内存的centos7 有一块网卡可以访问internet 磁盘 40G cpu分2 4线程 cpu要开启虚拟化 r
  • 串---KMP模式匹配算法之获取next数组

    一 获取模式串T的next数组值 1 回顾 我们所知道的KMP算法next数组的作用 next j 表示当前模式串T的j下标对目标串S的i值失配时 我们应该使用模式串的下标为next j 接着去和目标串失配的i值进行匹配 而KMP算法的ne
  • __attribute__((visibility("default")))

    设置符号可见性 vis c include