-fvisibility=hidden
时间: 2023-12-02 21:04:08 浏览: 86
-fvisibility=hidden是一个编译选项,它可以将动态库中的符号隐藏起来,只有被显式声明为可见的符号才会被导出。这个选项可以提高动态库的安全性和稳定性,因为它可以防止动态库中的符号被意外地修改或者被其他程序调用。同时,它也可以减小动态库的大小,因为只有需要导出的符号才会被包含在动态库中。
相关问题
-fvisibility=hidden 应该加到Makefile.am中的哪里
`-fvisibility=hidden` 应该添加到 `Makefile.am` 中的 `CXXFLAGS` 和 `CFLAGS` 变量中,以确保所有被编译的源文件都启用了隐藏符号的功能。
例如,可以将以下语句添加到 `Makefile.am` 中:
```
AM_CXXFLAGS = -fvisibility=hidden
AM_CFLAGS = -fvisibility=hidden
```
这样,编译器在编译源文件时就会自动启用隐藏符号的功能,从而保证编译生成的目标文件中的符号可见性受到限制。如果只需要对部分源文件启用隐藏符号的功能,可以将上述语句写在对应的源文件的编译规则中,例如:
```
main_SOURCES = main.cpp util.c
main_CPPFLAGS = -I$(top_srcdir)/include
main_CXXFLAGS = -fvisibility=hidden
main_CFLAGS = -fvisibility=hidden
```
上述语句中,`main_SOURCES` 指定了需要编译的源文件,`main_CPPFLAGS` 指定了编译时需要添加的头文件搜索路径,`main_CXXFLAGS` 和 `main_CFLAGS` 分别指定了 C++ 和 C 编译器的选项,其中包括了 `-fvisibility=hidden` 选项。这样,只有 `main.cpp` 和 `util.c` 两个源文件会启用隐藏符号的功能,其他源文件不受影响。
C++ -fvisibility==hidden 在cmake中怎么使用
在 CMake 中使用 `-fvisibility=hidden` 参数可以通过在 `CMAKE_CXX_FLAGS` 变量中添加该参数来实现。可以在 `CMakeLists.txt` 文件中添加以下内容:
```
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
```
这样在编译时就会自动加上 `-fvisibility=hidden` 参数,从而实现符号的隐藏。当然,也可以根据不同的编译器使用不同的参数,例如对于 GCC 编译器,可以使用 `-fvisibility=hidden` 参数,而对于 Clang 编译器,可以使用 `-fvisibility=hidden -fvisibility-inlines-hidden` 参数。可以根据具体的情况选择合适的参数。
阅读全文