第一次在64位系统上(amd64, debian, gcc 4, jdk 1.5.0_10)跑东西, 简单记录下...
程序很简单, java通过jni调用C++封装的动态链接库, 同时用了opencv。这个程序在32位debian上顺利编译运行。
一开始很顺利, 下载opencv源码, 编译生成so(/usr/local/lib), 添加/etc/ld.so.conf.d/opencv.conf, 执行ldconfig(其实也可以加入到LD_LIBRARY_PATH环境变量中, 见下文有关ld.so内容), 编译运行sample程序(
参照).
接下来编译源码时出错了, GOOGLE一把, 发现
有个人说在64位上编译要在g++编译时带选项-fPIC, 且一定要加到最前面...
编译成功, 生成出lib***.so, jni加载动态库时, windows下会查找***.dll, 而linux/solaris下会查找lib***.so.
执行的时候却出错:
java: symbol lookup error: /opt/MyDemo/libPicMatcherService.so: undefined symbol