如何从linux SO库中仅导出某些函数
How to export only certain functions from linux SO library?
创建Windows DLL时,可以很容易地选择导出的符号(使用dllexport)。在这种情况下,未导出的符号在库外不可见。如何在Linux上获得相同的功能?换句话说:假设我在一个项目中有10个函数。其中三个应该被导出,剩下的7个是不应该从库API中使用的辅助函数。我如何以这种方式创建SO文件,让我实现这一点?
在Linux/GCC上,默认情况下会导出所有内容(当然,这取决于语言规则:匿名命名空间中的内容永远不会导出)。
如果要停止导出符号,可以使用__attribute__((__visibility__("hidden")))
。例如:
__attribute__((__visibility__("hidden"))) void myPrivateFunction();
相关文章:
- 函数在Windows或Linux上运行时表现不同
- 如何将函数指针从 std::function 传递到 Linux 克隆?
- Linux c++.在预加载的共享库中定义的基类的崩溃调用函数
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 在 Linux 上编译 - 在函数 '_start' 中:(.text+0x20):对 'main' 的未定义引用
- 无法在clang Linux中分配非静态成员函数,但我可以在Visual Studio Windows中分配
- 有没有一种方法可以在linux中扫描已构建的ARM库中的函数
- 我可以为这些特定函数使用什么C++标头?Linux
- 删除了 g++ 在 linux 中basic_stringstream函数 std
- 如何在Linux中使用GLFW函数正确链接C++对象?
- 如何在 Linux 中运行 Visual Studio 2015 托管 c++ 测试函数?
- 奇怪的内存消耗 C fread / C++ 读取函数,基于 Linux sysinfo 数据
- 无效使用非静态成员函数 c++ 线程 linux
- linux 是否"rename"函数调用块,直到复制(当源和目标在不同磁盘中时)完成
- 错误:没有匹配的成员函数调用 'upper_bound' =>仅在 macOS 上 => Windows 和 Linux 都很好
- 没有返回类型的静态函数可以通过Windows上的编译,但不能传递Linux上的编译
- 共享库 C++ Linux 加载非虚拟函数
- 如何使用Mono / C#程序调用Linux / C ++函数?
- 在Linux上,用BASH脚本或C 脚本替换JavaScript函数
- C++,时间函数(Linux)-纳秒分辨率