java.lang.UnsatisfiedLinkError`GOMP_4.0' Travis CI使用Java OpenCV库

时间:2015-09-02 19:29:19

标签: java opencv gradle travis-ci

我正在构建使用org.bytedeco.javacpp -presets opencv版本的项目。我使用gradle进行依赖管理/构建/测试等... 构建和测试在我的本地计算机上正常工作但在travis上运行我收到以下错误:

Caused by:
    java.lang.UnsatisfiedLinkError: /tmp/javacpp28510966720824/libjniopencv_core.so: /usr/lib/x86_64-linux-gnu/libgomp.so.1: version `GOMP_4.0' not found (required by /tmp/javacpp28510966720824/libopencv_core.so.3.0)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1822)
        at java.lang.Runtime.load0(Runtime.java:809)
        at java.lang.System.load(System.java:1083)
        at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:539)
        ... 10 more

我修改了travis.yml,以便查看文件是否确实存在。

$ ls -l /usr/lib/*/libgomp.so*
lrwxrwxrwx 1 root root    16 Apr 15  2012 /usr/lib/x86_64-linux-gnu/libgomp.so.1 -> libgomp.so.1.0.0
-rw-r--r-- 1 root root 55888 Apr 15  2012 /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
$ dpkg -l | grep libgomp1
ii  libgomp1                            4.6.3-1ubuntu5                                      GCC OpenMP (GOMP) support library

在我的本地(OSX)和另一台开发机器(Linux)上,一切正常。我不确定我错过了什么。

这是遇到问题的项目: https://github.com/WPIRoboticsProjects/GRIP

特别是这个PR:https://github.com/WPIRoboticsProjects/GRIP/pull/7

有关此问题的问题:https://github.com/bytedeco/javacpp-presets/issues/84

2 个答案:

答案 0 :(得分:0)

对于maven测试目标,你可以使用maven-surefire-plugin和参数Djava.library.path或maven-dependency-plugin来解压你的libs。 我遇到了类似的问题。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <systemProperties>
            <property>
                <name>TESSDATA_PREFIX</name>
                <value>${tessdata.directory}</value>
            </property>
        </systemProperties>
        <argLine>-Djava.library.path=${native.library.directory} -Djni.library.path=${native.library.directory}</argLine>
    </configuration>
</plugin>

答案 1 :(得分:0)

所以来找出问题是GOMP_4.0仅适用于gcc 4.8及更高版本。 Travis运行的VM是Ubuntu 12.04 LTS Server Edition 64 bit,其中包含gcc 4.6。 gcc 4.6有GOMP_3.0。基本上你需要更新gcc。

在travis中,最好的方法(不使用sudo)是使用他们的apt插件。 只需将其添加到.travis.yml

即可
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - gcc-4.8
      - g++-4.8

或者如果您只是在Ubuntu系统上并遇到此问题:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.8 g++-4.8