Linux开发---usr/bin/c++ :not found

本文介绍了一个简单的命令来安装lsb-core。使用sudo权限运行apt-get install lsb-core即可完成安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sudo apt-get install lsb-core

直接安装lsb-core就可以了

BUG -- Linker flags (Release): -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined -- Linker flags (Debug): -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined -- ccache: NO -- Precompiled headers: NO -- Extra dependencies: dl m pthread rt -- 3rdparty dependencies: -- -- OpenCV modules: -- To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo stitching ts video videoio -- Disabled: world -- Disabled by dependency: - -- Unavailable: java python2 python3 -- Applications: tests perf_tests apps -- Documentation: NO -- Non-free algorithms: NO -- -- GUI: GTK3 -- GTK+: YES (ver 3.24.20) -- GThread : YES (ver 2.64.6) -- GtkGlExt: NO -- VTK support: NO -- -- Media I/O: -- ZLib: /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.11) -- JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80) -- WEBP: build (ver encoder: 0x020f) -- PNG: /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.37) -- TIFF: /usr/lib/x86_64-linux-gnu/libtiff.so (ver / ) -- JPEG 2000: OpenJPEG (ver 2.4.0) -- OpenEXR: /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 2_3) -- HDR: YES -- SUNRASTER: YES -- PXM: YES -- PFM: YES -- -- Video I/O: -- DC1394: YES (2.2.5) -- FFMPEG: YES -- avcodec: YES (58.54.100) -- avformat: YES (58.29.100) -- avutil: YES (56.31.100) -- swscale: YES (5.5.100) -- avresample: NO -- GStreamer: YES (1.16.3) -- v4l/v4l2: YES (linux/videodev2.h) -- -- Parallel framework: pthreads -- -- Trace: YES (with Intel ITT) -- -- Other third-party libraries: -- VA: NO -- Lapack: NO -- Eigen: YES (ver 3.3.7) -- Custom HAL: NO -- Protobuf: build (3.19.1) -- -- OpenCL: YES (no extra features) -- Include path: /home/hyzk/Downloads/opencv-4.7.0/3rdparty/include/opencl/1.2 -- Link libraries: Dynamic load -- -- Python (for build): /usr/bin/python3 -- -- Java: -- ant: NO -- JNI: NO -- Java wrappers: NO -- Java tests: NO -- -- Install to: /usr/local
最新发布
07-20
<think>我们正在解决OpenCV编译过程中的链接器错误。根据引用,用户可能遇到两个问题: 1. 需要正确配置CMake以包含CUDA模块(引用[1]) 2. 针对特定平台(如HISI3559A)需要修改libpng的CMake文件以修复未定义引用(引用[2]) 用户之前尝试强制移除libtiff,但可能因为环境问题失败。现在编译OpenCV时出现链接器错误。 可能的错误原因及解决方案: 1. 未正确链接CUDA相关库:在CMake中需要明确指定所需的OpenCV CUDA模块。 2. 平台特定问题(如ARM NEON指令集):需要修改第三方库的编译选项。 步骤: 一、确保CMake正确配置CUDA模块 在CMakeLists.txt中,应包含如下查找OpenCV组件的语句(如引用[1]所示): ```cmake find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc features2d calib3d cudaarithm cudabgsegm cudafilters cudaimgproc cudawarping cudafeatures2d) ``` 二、修复ARM平台下libpng的NEON支持问题(如引用[2]所示) 修改文件:`3rdparty/libpng/CMakeLists.txt` 在文件开头添加: ```cmake IF(HISI3559A) SET(ARM 1) SET(ENABLE_NEON 1) ENDIF() ``` 注意:如果用户不是HISI3559A平台,但遇到类似未定义引用`png_init_filter_functions_neon`的错误,则可能需要根据实际平台调整条件判断。例如,如果是ARM64平台,可以改为: ```cmake IF(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "arm") SET(ARM 1) SET(ENABLE_NEON 1) ENDIF() ``` 三、环境问题 之前用户尝试移除libtiff,但可能因为conda环境问题没有成功。建议: 1. 创建一个新的conda环境(避免使用base环境): ```bash conda create -n opencv_build python=3.9 -y conda activate opencv_build conda install numpy cmake -y ``` 2. 或者完全退出conda环境,使用系统环境编译(避免conda环境中的库干扰): ```bash conda deactivate ``` 四、重新配置和编译 1. 清除之前的构建: ```bash cd build rm -rf * ``` 2. 运行CMake(根据实际路径调整): ```bash cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=7.5 \ # 根据GPU计算能力调整 -D CUDA_ARCH_PTX="" \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_NEON=ON \ # 如果是ARM平台 -D BUILD_EXAMPLES=OFF \ .. ``` 3. 如果遇到特定库(如libtiff)的问题,可以尝试在CMake中禁用相关模块(除非需要): ```cmake -D BUILD_TIFF=OFF ``` 五、其他常见链接错误处理 1. 确保所有依赖库已安装(如libpng, libjpeg等): ```bash sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev ``` 2. 如果错误涉及C++标准库,可以尝试在CMake中设置C++标准: ```cmake -D CMAKE_CXX_STANDARD=11 ``` 六、编译并安装 ```bash make -j$(nproc) sudo make install ``` 七、验证安装 ```bash pkg-config --modversion opencv4 ``` 如果仍然遇到错误,请提供具体的错误信息以便进一步分析。 相关问题: 1. 如何查看GPU的计算能力(CUDA_ARCH_BIN)? 2. 如何修复OpenCV编译中未定义的引用错误? 3. 如何配置CMake以启用OpenCV的CUDA支持? 4. 如何在ARM平台上编译OpenCV?</think>### 解决OpenCV编译中的链接器标志错误 #### 错误原因分析 链接器错误通常由以下原因导致: 1. **依赖库缺失**:缺少必要的系统库或第三方库 2. **符号未定义**:函数声明存在但实现未链接 3. **ABI不兼容**:不同编译器版本生成的二进制不兼容 4. **链接顺序错误**:库文件链接顺序不正确 #### 解决方案(分步操作) ##### 1. 修复CUDA相关链接问题(基于引用[1]) ```cmake # 在您的CMakeLists.txt中确保包含以下组件 find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc features2d calib3d cudaarithm cudabgsegm cudafilters cudaimgproc cudawarping cudafeatures2d ) # 添加以下链接指令 target_link_libraries(your_target PRIVATE ${OpenCV_LIBS} CUDA::cudart CUDA::cublas CUDA::cufft ) ``` ##### 2. 修复ARM平台NEON支持问题(基于引用[2]) 修改 `3rdparty/libpng/CMakeLists.txt`: ```cmake # 在文件开头添加 if(ARM OR AARCH64) set(ARM 1) set(ENABLE_NEON 1) add_definitions(-DPNG_ARM_NEON_OPT=1) endif() ``` ##### 3. 通用解决方案 ```bash # 清理构建目录 cd ~/Downloads/opencv-4.7.0/build rm -rf * # 重新配置CMake(关键参数) cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=7.5 \ # 根据您的GPU架构修改 -D CUDA_FAST_MATH=ON \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_NEON=ON \ # ARM平台需启用 -D BUILD_SHARED_LIBS=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ .. ``` ##### 4. 修复libtiff依赖问题(基于您之前的操作) ```bash # 创建纯净编译环境 conda create -n opencv_build python=3.9 -y conda activate opencv_build conda install numpy cmake -y # 强制移除冲突库 conda remove --force libtiff libpng -y ``` ##### 5. 完整编译命令 ```bash cd ~/Downloads/opencv-4.7.0/build cmake .. 2>&1 | tee cmake.log # 保存日志 make -j$(nproc) VERBOSE=1 2>&1 | tee build.log # 详细输出 sudo make install ``` #### 常见错误处理 1. **未定义符号错误**: ```bash nm -gC your_library.so | grep missing_symbol ``` 在链接命令中添加 `-Wl,--no-as-needed` 标志 2. **ABI不兼容**: ```cmake # 在CMakeLists.txt中添加 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) ``` 3. **CUDA链接错误**: ```cmake find_package(CUDA REQUIRED) include_directories(${CUDA_INCLUDE_DIRS}) ``` #### 验证安装 ```bash # 检查OpenCV版本 pkg-config --modversion opencv4 # 验证CUDA支持 python -c "import cv2; print(cv2.cuda.getCudaEnabledDeviceCount())" ``` #### 附加建议 1. 使用 `ccmake` 交互式工具检查配置: ```bash sudo apt-get install cmake-curses-gui ccmake .. ``` 2. 检查系统库版本一致性: ```bash ldd -r opencv_core | grep "not found" ``` > 建议始终保留编译日志(cmake.log/build.log),它们包含解决链接问题的关键信息[^1][^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值