no jniopencv_core in java.library.path和no jniopencv_highgui in java.library.path

本文详细介绍了在使用win7(32位)+Eclipse(KEPLER)+OpenCV-2.4.8+javacv-0.7+processing-2.1.1进行项目开发时,遇到的关于nojniopencv_coreinjava.library.path、nojniopencv_highguiinjava.library.path的编译错误,并提供了详细的解决方案。包括检查系统变量PATH、将javacv-bin下的jar包拷贝至项目libs下、配置JavaBuildPath等步骤。
部署运行你感兴趣的模型镜像

开发环境:win7(32位)+ Eclipse(KEPLER)+ OpenCV-2.4.8 + javacv-0.7 + processing-2.1.1

 

编译报错信息:no jniopencv_core in java.library.path 、 no jniopencv_highgui in java.library.path

 

解决方案:

  1. 检查系统变量PATH是否包含“D:\OpenCV248\build\x86;”若是64位的操作系统则对应为“D:\OpenCV248\build\x64”(具体路径视opencv安装的路径而定);
  2. 在项目新建文件夹“libs”,将javacv-bin下的jar包拷贝至libs下,右击需要的jar包(我的开发环境对应javacv.jar,javacpp.jar,javacv-windows-x86.jar),“Build Path”—》“Add to Build Path”;
  3. 右击项目—》“Build Path”—》“Configure Build Path”—》"Java Build Path"—》“Libraries”—》"JRE System Library"—》“Native library location”,将“D:/OpenCV248/build/x86/vc10/bin”(具体路径视opencv安装的路径而定)添加进来,OK!

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

[ 36%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts.cpp.o /usr/bin/ld: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_enter_pointer' /usr/bin/ld: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_leave_pointer' collect2: error: ld returned 1 exit status make[2]: *** [apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:102:bin/opencv_annotation] 错误 1 make[1]: *** [CMakeFiles/Makefile2:3348:apps/annotation/CMakeFiles/opencv_annotation.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务.... [ 36%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/legacy_backend.cpp.o [ 36%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/model.cpp.o [ 36%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts_arrtest.cpp.o [ 36%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts_func.cpp.o [ 36%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts_gtest.cpp.o [ 36%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts_perf.cpp.o [ 36%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net.cpp.o [ 36%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts_tags.cpp.o [ 37%] Linking CXX executable ../../bin/opencv_visualisation [ 37%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net_cann.cpp.o [ 37%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net_impl.cpp.o [ 37%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net_impl_backend.cpp.o /usr/bin/ld: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_leave_pointer' /usr/bin/ld: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_enter_pointer' [ 37%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net_impl_fuse.cpp.o collect2: error: ld returned 1 exit status make[2]: *** [apps/visualisation/CMakeFiles/opencv_visualisation.dir/build.make:102:bin/opencv_visualisation] 错误 1 make[1]: *** [CMakeFiles/Makefile2:3378:apps/visualisation/CMakeFiles/opencv_visualisation.dir/all] 错误 2 [ 37%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net_openvino.cpp.o [ 37%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/net_quantization.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/nms.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/common.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/math_functions.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_inner_product.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_lrn.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_pool.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/ocl4dnn/src/ocl4dnn_softmax.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/onnx/onnx_graph_simplifier.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/onnx/onnx_importer.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_cann.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_cuda.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_halide.cpp.o [ 38%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_inf_engine.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_timvx.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_vkcom.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/op_webnn.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/registry.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/tensorflow/tf_graph_simplifier.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/tensorflow/tf_importer.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/tensorflow/tf_io.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/tflite/tflite_importer.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/THDiskFile.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/THFile.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/THGeneral.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/torch/torch_importer.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/conv_1x1_fast_spv.cpp.o [ 39%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/conv_depthwise_3x3_spv.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/conv_depthwise_spv.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/conv_implicit_gemm_spv.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/gemm_spv.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/nary_eltwise_binary_forward_spv.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/shader/spv_shader.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/buffer.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/command.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/context.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/fence.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/internal.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/op_base.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/op_conv.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/op_matmul.cpp.o [ 40%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/op_naryEltwise.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/pipeline.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/src/tensor.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/vulkan/vk_functions.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/vkcom/vulkan/vk_loader.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/opencl_kernels_dnn.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/conv_block.avx.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/conv_depthwise.avx.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/conv_winograd_f63.avx.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/fast_gemm_kernels.avx.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx2.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/int8layers/layers_common.avx2.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/conv_block.avx2.cpp.o [ 41%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/conv_depthwise.avx2.cpp.o [ 42%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/conv_winograd_f63.avx2.cpp.o [ 42%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/cpu_kernels/fast_gemm_kernels.avx2.cpp.o [ 42%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx512_skx.cpp.o [ 42%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/int8layers/layers_common.avx512_skx.cpp.o [ 42%] Linking CXX static library ../../lib/libopencv_ts.a [ 42%] Built target opencv_ts [ 42%] Linking CXX shared library ../../lib/libopencv_dnn.so [ 42%] Built target opencv_dnn [ 42%] Linking CXX shared library ../../lib/libopencv_features2d.so [ 42%] Built target opencv_features2d make: *** [Makefile:166:all] 错误 2 [sudo] charon 的密码: [ 0%] Built target opencv_dnn_plugins [ 0%] Built target opencv_highgui_plugins [ 0%] Built target gen-pkgconfig [ 0%] Built target opencv_videoio_plugins [ 0%] Built target ittnotify [ 8%] Built target opencv_core [ 15%] Built target opencv_imgproc [ 17%] Built target opencv_imgcodecs [ 18%] Built target opencv_videoio [ 18%] Built target opencv_highgui [ 19%] Built target opencv_ts [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_arithm.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_channels.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_dft.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_gemm.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_image2d.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_matrix_expr.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_matrix_operation.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/ocl/test_opencl.cpp.o [ 19%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_arithm.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_async.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_concatenation.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_conjugate_gradient.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_countnonzero.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_cuda.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_downhill_simplex.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_ds.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_dxt.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_eigen.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_hal_core.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_hasnonzero.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin_emulator.cpp.o [ 20%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_io.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_logtagconfigparser.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_logtagmanager.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_lpsolver.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_main.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_mat.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_math.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_misc.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_opencl.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_operations.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_ptr.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_quaternion.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_rand.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_rotatedrect.cpp.o [ 21%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_umat.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_utils.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.sse2.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.sse3.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.ssse3.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.sse4_1.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.sse4_2.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.fp16.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.avx.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.avx2.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin256.avx2.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin128.avx512_skx.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin256.avx512_skx.cpp.o [ 22%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_intrin512.avx512_skx.cpp.o [ 22%] Linking CXX executable ../../bin/opencv_test_core /usr/bin/ld: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_enter_pointer' /usr/bin/ld: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_leave_pointer' collect2: error: ld returned 1 exit status make[2]: *** [modules/core/CMakeFiles/opencv_test_core.dir/build.make:887:bin/opencv_test_core] 错误 1 make[1]: *** [CMakeFiles/Makefile2:1670:modules/core/CMakeFiles/opencv_test_core.dir/all] 错误 2 make: *** [Makefile:166:all] 错误 2 ————————————————:未找到命令 版权声明:本文为博主原创文章,遵循:未找到命令 bash: 原文链接:https://blog.csdn.net/LittleRuby/article/details/137987709: 没有那个文件或目录
最新发布
10-23
<think>我们正在解决OpenCV编译过程中出现的链接错误,具体是: /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to `g_once_init_enter_pointer' `g_once_init_leave_pointer' 根据引用[2]引用[4]的线索,这种未定义引用问题通常与libffi库有关。libffi(Foreign Function Interface)是一个用于调用C函数以及处理调用约定的库。在编译或链接时,如果libffi的版本不匹配或链接不正确,就可能出现上述问题。 引用[4]中描述了一个类似的问题(Conda环境下libp11-kit.so.0: undefined symbol: ffi_type_pointer),并通过重新创建libffi的符号链接解决了问题。同样,我们的问题可能也是由于libffi的链接问题导致的。 解决步骤: 1. **定位libffi库**:首先,我们需要找到系统中安装的libffi库。通常,它们在`/usr/lib/x86_64-linux-gnu/`或`/lib/x86_64-linux-gnu/`目录下。 ```bash ls /usr/lib/x86_64-linux-gnu/libffi* ls /lib/x86_64-linux-gnu/libffi* ``` 2. **检查现有的符号链接**:进入OpenCV编译时链接库的目录(通常是系统的库目录,或者如果使用了conda环境,则在conda环境的lib目录下),查看libffi相关的符号链接是否正确指向了实际存在的库文件。 3. **重新创建符号链接**:如果发现符号链接损坏或指向错误的版本,可以备份后重新创建正确的符号链接。例如,在系统库目录中: ```bash # 进入系统库目录 cd /usr/lib/x86_64-linux-gnu/ # 备份现有的符号链接(如果有) sudo mv libffi.so libffi.so.bak # 创建新的符号链接,指向正确的库文件(假设我们找到的库文件是libffi.so.7.1.0) sudo ln -s libffi.so.7.1.0 libffi.so ``` 4. **如果使用了conda环境**:按照引用[4]的方法,进入conda环境的lib目录,检查并重新链接libffi。例如: ```bash # 进入conda环境的lib目录 cd ~/miniconda3/envs/<your_env>/lib # 备份并重新链接 mv libffi.so.7 libffi.so.7.bak ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7 ``` 5. **重新运行CMake编译**:在修复libffi的链接之后,重新运行CMake(确保清除之前的构建缓存)并重新编译OpenCV。 注意:如果系统中存在多个libffi(例如同时有系统安装的conda安装的),需要确保编译OpenCV时使用的是正确版本的libffi。可以通过设置环境变量`LD_LIBRARY_PATH`来指定库的搜索路径,或者在CMake中显式指定libffi的路径。 另外,引用[3]中提到,有时候指定特定版本的OpenCV也可能解决类似问题,但这里的问题更可能是libffi链接问题。 如果上述方法不能解决问题,还可以尝试安装或重新安装libffi-dev包: ```bash sudo apt-get install --reinstall libffi-dev ``` 最后,重新编译OpenCV。 --- 相关问题: 1. 如何检查一个共享库的依赖关系? 2. 在编译大型项目(如OpenCV)时,如何避免库版本冲突? 3. 如何设置CMake以使用特定版本的库文件? </think>### 解决 OpenCV 编译中 `libgtk-x11-2.0.so.0` 未定义引用问题 #### 问题分析 错误信息 `/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0: undefined reference to 'g_once_init_enter_pointer'` 表明 GTK 库链接存在问题,通常由以下原因引起: 1. **库版本不匹配**:GTK 库与 GLib 库版本冲突[^4] 2. **符号链接错误**:关键库文件(如 libffi)链接不正确[^4] 3. **环境变量冲突**:多版本库并存导致链接器混淆[^5] #### 解决方案(逐步操作) ##### 步骤 1:修复 libffi 符号链接 ```bash # 定位 libffi 所在目录 find /usr -name "libffi*" 2>/dev/null # 进入系统库目录(示例路径,需替换为实际路径) cd /usr/lib/x86_64-linux-gnu # 备份原文件 sudo mv libffi.so libffi.so.bak # 创建正确符号链接(版本号需匹配) sudo ln -s libffi.so.7.1.0 libffi.so ``` 此操作解决 `ffi_type_*` 相关的未定义引用问题[^4] ##### 步骤 2:重建 GTK 库缓存 ```bash # 更新动态链接器缓存 sudo ldconfig # 验证 GTK 库链接状态 ldd /lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 | grep -E "glib|gobject" ``` 正常应显示 `libglib-2.0.so.0` `libgobject-2.0.so.0` 的完整路径 ##### 步骤 3:清理并重建 OpenCV 编译 ```bash # 进入 OpenCV 构建目录 cd opencv-4.10.0/build # 清除旧编译 make clean # 重新配置(关键参数) cmake -D WITH_GTK=ON \ -D GTK2_GLIBCONFIG_INCLUDE_DIR=/usr/lib/x86_64-linux-gnu/glib-2.0/include \ -D GTK2_GDKCONFIG_INCLUDE_DIR=/usr/lib/x86_64-linux-gnu/gtk-2.0/include \ .. # 重新编译 make -j$(nproc) ``` #### 技术原理 1. **符号链接修复** `g_once_init_enter_pointer` 是 GLib 线程安全初始化函数,依赖 libffi 提供调用约定支持: $$ \text{GLib} \xrightarrow{\text{依赖}} \text{libffi} \xrightarrow{\text{提供}} \text{FFI调用接口} $$ 错误的符号链接导致链接器无法解析 GLib 中的函数指针[^2][^4] 2. **版本兼容性** GTK2 与 GLib 的版本绑定关系: | GTK 版本 | 兼容 GLib 版本 | |----------|---------------| | 2.24.x | glib-2.40+ | | 2.22.x | glib-2.36+ | 版本偏差会导致 `g_once_init_*` 符号缺失[^1] --- ### 相关问题 1. 如何检查系统中已安装的 GLib GTK 版本兼容性? 2. 当多个 Linux 发行版混用库文件时,如何避免符号冲突? 3. OpenCV 编译中如何彻底禁用 GTK 支持? 4. 如何为特定版本的 GTK 创建独立的开发环境? [^1]: 参考 GLib 线程初始化机制源码 `glib/gthread-posix.c` [^2]: 涉及 libffi 调用约定实现原理 [^4]: Conda 环境下 libffi 修复方案 [^5]: ROS 环境中的共享库加载问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值