ubuntu使用cmake编译c++为so并列举一个完整例子
时间: 2024-12-13 07:17:46 浏览: 7
Ubuntu下Cmake编译多个C和C++工程调用opencv库的例子
Ubuntu系统上使用CMake编译C++为共享库(.so文件)通常包含以下几个步骤:
1. **安装必要的工具**:
首先确保已经安装了`gcc`, `g++`, 和 `cmake`。你可以通过运行以下命令来检查和安装它们(如果未安装):
```
sudo apt-get update
sudo apt-get install build-essential cmake
```
2. **创建CMakeLists.txt**:
创建一个名为`CMakeLists.txt`的文件,并添加以下内容,描述了项目的基本结构和构建配置:
```cmake
cmake_minimum_required(VERSION 3.5)
project(MyProject)
# 指定源文件目录和目标目录
set(CMAKE_CXX_STANDARD 11) # 设置C++标准
set(SOURCE_DIR src) # 源码存放位置
set(BINARY_DIR bin) # 输出二进制文件位置
# 添加C++源文件
add_executable(${PROJECT_NAME} ${SOURCE_DIR}/main.cpp)
# 将生成的目标设置为动态链接库
find_package(Threads REQUIRED) # 寻找并使用线程库
target_link_libraries(${PROJECT_NAME} Threads::Threads)
# 定义安装路径(可选)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION lib)
```
这里假设你有一个名为`main.cpp`的C++源文件。
3. **构建过程**:
- 进入项目的根目录:
```
cd /path/to/your/project
```
- 创建一个新的构建目录(如build),然后进入该目录:
```
mkdir build
cd build
```
- 初始化CMake,指定源代码目录和构建目录:
```
cmake ..
```
- 编译:
```
make
```
- 如果一切顺利,将在`bin`目录下看到编译后的`.so`文件(如libMyProject.so)。
4. **测试和引用**:
使用`ldd`命令验证是否成功创建了一个动态链接库:
```
ldd bin/libMyProject.so
```
而在其他C++程序中使用这个库,只需包含头文件并在链接时指定动态库即可:
```cpp
#include "myproject.h" // 假设头文件名
int main() {
MyProjectClass obj; // 根据需要实例化对象
return 0;
}
```
阅读全文