查看 可执行文件包含的静态库
时间: 2024-01-21 08:17:13 浏览: 167
您可以使用 Linux 系统下的 objdump 工具来查看一个可执行文件所包含的静态库。具体操作步骤如下:
1. 打开终端,进入到可执行文件所在的目录。
2. 输入以下命令来查看可执行文件中包含的静态库:
```
objdump -p 可执行文件名 | grep NEEDED
```
其中,可执行文件名是你要查看的可执行文件的文件名。
3. 终端会输出类似以下的内容:
```
NEEDED libxxx.so
NEEDED libyyy.so
```
这些就是可执行文件中所依赖的静态库的文件名。
另外,如果您想要查看一个静态库中包含的函数和符号等信息,可以使用以下命令:
```
objdump -t 静态库名
```
其中,静态库名是你要查看的静态库的文件名。
相关问题
linux如何查看静态可执行文件依赖的库
可以使用命令 `ldd` 来查看静态可执行文件依赖的库。具体操作步骤如下:
1. 打开终端,切换到要查看的可执行文件所在的目录。
2. 输入以下命令:`ldd 可执行文件名`
例如,我要查看 `/usr/bin/bash` 这个静态可执行文件依赖的库,可以输入以下命令:
```
ldd /usr/bin/bash
```
3. 执行命令后,终端会输出该可执行文件依赖的库列表。每个库都显示在一行上,包括库的名称、地址和版本号等信息。
例如,下面是查看 `/usr/bin/bash` 依赖的库的输出示例:
```
linux-vdso.so.1 (0x00007fff2a5f2000)
libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f9d9b7a3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f9d9b59f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f9d9b3ab000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d9b9a9000)
```
cmake静态编译可执行文件demo
CMake是一个跨平台的构建系统。它可以自动生成Makefile或是Visual Studio的项目文件,以达到构建目标的效果。
静态编译指所有用到的第三方库都会被链接到最终的二进制文件中,因此这种方式生成的可执行文件可以在不同的机器上运行,而不必考虑库文件的路径和版本等问题。
下面是一个简单的CMakeLists.txt文件,用于生成一个静态编译的可执行文件。
```cmake
cmake_minimum_required(VERSION 3.5)
project(demo)
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_STANDARD 11)
set(SOURCES main.cpp)
set(LIBRARIES lib1 lib2)
include_directories(include)
add_executable(demo ${SOURCES})
target_link_libraries(demo ${LIBRARIES})
```
在这个例子中,我们定义了一个项目名称为demo,设置了编译器为g++,使用C++11标准进行编译。我们还定义了源码文件名为main.cpp,库文件名为lib1和lib2。在CMakeLists.txt中,我们通过add_executable命令将源码文件编译成可执行文件,并通过target_link_libraries命令将库文件链接到可执行文件中。
在项目目录下执行以下指令:
```bash
mkdir build && cd build
cmake ..
make
```
即可在build目录下生成可执行文件demo。我们可以使用ldd命令查看可执行文件的依赖关系,发现所有依赖库都已经被链接到了二进制文件中。
```bash
ldd demo
```
需要注意的是,静态编译的可执行文件可能会比较大,因为它包含了所有的依赖库,因此需要权衡可执行文件的大小和可移植性。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)