g++编译
命令:
otool -L xx.lib 查看mac os 动态库依赖的包
ldd xx.so 查看linux动态库依赖的包
c++打包动态库java调用,mac上没问题到linux上就是不行,g++命令:
g++ -fPIC -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/linux/ -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/ -L/home/allen/song/greenProject/ImageQuery/demo/build/ -lImageQuery jni_SearchImage.cpp -shared -o libSearchImage.so
一直报同一个错误:
java: symbol lookup error: release-linux/libSearchImage.so: undefined symbol: _ZN4mmcv11SearchImageC1Ev
一直以为是java程序找不到release-linux目录下的so,各种添加LD_LIBRARY_PATH,各种无效
由于后面那个诡异的乱码,怀疑是不是mac os和linux下字符编码的问题,手动删除了.hpp里的各种空格,未果
最后用ldd,发现release-linux目录下的so根本没有链接上-L -l给指定的C++ library
最后参考这里,把.cpp和-L -l的顺序对调一下:
g++ -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/linux/ -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/ jni_SearchImage.cpp -L/home/allen/song/greenProject/ImageQuery/demo/build/ -lImageQuery -fPIC -shared -o libSearchImage.so
就可以了......这算是什么坑.......为了证明顺序.cpp在前,library路径在后的必要性,特意改回去又试了一遍,证明确实是这个坑......
g++编译的更多相关文章
- g++编译流程
测试程序test.cpp如下所示: #include <iostream> using namespace std; #define MAX 9 int main() { //just f ...
- g++编译总结
g++编译&&gdb调试&&coredump调试 一.编译注意细节 1.使用g++编译CPP文件如果用gcc编译C++源文件时,加以下选项:-lstdc++,否则使用了 ...
- [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...
- 有关g++编译调试的问题
打了个指针版的treap,想用gdb调试,用gcc -g ×××.cpp -o a 时却报错了——直接用gcc编译却不会报错,提示:对‘operator new(unsigned int)’未定义的引 ...
- Linux-编译器gcc/g++编译步骤
gcc和g++现在是gnu中最主要和最流行的c&c++编译器.g++是c++的命令,以.cpp为主:对于c语言后缀名一般为.c,这时候命令换做gcc即可.编译器是根据gcc还是g++来确定是按 ...
- linux gcc 和 g++ 编译
gcc编译 gcc -o test.out test.c g++ 编译 g++ -o test.out test.cpp
- g++编译cpp文件
gdb调试c程序打不到断点的原因可能是编译c文件的时候没有加-g选项,-g选项是编译加debug信息的,不加是打不到断点的 g++编译cpp文件 g++ -g -c *.cpp 编译 g+ ...
- Linux环境g++编译TinyXML动态库
除了CMarkup,tinyxml也是C/C++下解析XML很好的工具.在linux下用g++编译tinyxml的步骤如下(tinyxml版本2.6.2): 进入tinyxml解压目录,用文本编辑器打 ...
- 学习总结:gcc/g++ 编译与链接
gcc/g++ 编译与链接 编译与链接的过程可以分解为四个步骤:预处理.编译.汇编.链接 预处理:源代码文件和相关的头文件,被预处理器cpp预处理成一个后缀为 .i 的文件(选项:-E) 编译:把预处 ...
- Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境
0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...
随机推荐
- 500 G JAVA视频网盘分享(JEECG开源社区)
500 G JAVA视频网盘分享(JEECG开源社区) [涵盖从java入门到深入架构,Linux.云计算.分布式.大数据Hadoop.ios.Android.互联网技术应有尽有] [转载:h ...
- 1-4-bootloader架构学习
1-4-bootloader架构学习 1.一般情况下嵌入式 Linux 系统中的软件主要分为以下几部分: 1) 引导加载程序:其中包括内部 ROM 中的固化启动代码和 BootLoader 两部分. ...
- pymysql 模块 使用目录
mysql python pymysql模块 基本使用 mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数 ...
- ORACLE安装入门篇OEL5.4安装ORACLE11g
一.安装ORACLE11g软件(11.2.0.0) (一)安装前的包支持 1.检测yum仓库是否已经配置好 yum list all 2.搭建yum仓库 1).挂载所需要的安装光盘 虚拟机挂载光盘: ...
- js或jsp 获取项目路径常用方法
可以引入一个jsp,这个jsp的内容如下: <%@page pageEncoding="UTF-8" contentType="text/javascript; c ...
- vue-自定义全局键盘码
1.Vue.config.keyCodes.enter=13; //main.js中定义全局 <template> <div> <input v-model=" ...
- spring boot 使用视图modelandview
1:springboot使用视图解析器,添加依赖 <!-- freemarker模板引擎视图 --> <dependency> <groupId>org.sprin ...
- 《全栈性能Jmeter》-5JMeter负载与监听
- Go linux 实践3
Go 的灵魂-goroutine(协程), channel(渠道) 看看吧,不多说了 ************************************************ package ...
- iOS应用图标及尺寸
Icon and Image Sizes Every app needs an app icon and a launch file or image. In addition, some apps ...