接上. 连接器无法识别libboost_system.so,虽然找到了动态库文件libboost_system.so但不兼容,导致无法完成链接. 这种情况一般都是二进制不兼容(通俗的讲就是,在一台机器(比如32位)上编译得到的so,放在另一台机器(比如64位)上链接). 查看库文件的属性: chu@:~/SCFF_proj/trunk/example/::]$ readelf -h /usr/lib//libboost_thread-mt.so.1.53.0 ELF 头: Magic: 7f 4…
在没有安装sqlite3的linux机器上,怎么在不安装的情况下使用sqlite3的数据库呢: 其中只需要2个文件即可: 数据库的动态库libsqlite3.so,sqlite3.h. 另外,一些系统可能会需要sqlite3ext.h 操作方法: 先找到libsqlite3.so,sqlite3.h两个文件,放在工程文件夹下(任意方便的位置,在编译的时候链接即可) 指定位置链接并编译 那么在编译时加上动态库的链接,并且指定为当前路径 gcc test.c $(HEADDIR)/sqlite3.h…
原因是操作系统的文件与手机需要的不同. 解决办法是将iOS DeviceSupport里当前手机版本的Symbols的libresolv.9.dylib文件,代替编译失败项目的Build Phases的Link Binary With Libraries 代替: 将Link Binary With Libraries里原来的libresolv.9.dylib删除,然后将下面的文件拖拽进去即可编译成功. ~/Library/Developer/Xcode/iOS DeviceSupport/10.…
错误过程:当“make”编译文件时报错No rule to make target `/usr/lib/libpython2.7.so', needed by `python/_pywraps2.so'.  Stop. 解决过程: 1.首先输入命令以下代码获取其出错原因 make --debug 错误提示如下,很明显是项目工程找不到它,原因有两个,一是系统没有装libpython2.7.os:二是装了,路径错误,或者名字不对 File '/usr/lib/libpython2.7.so' doe…
linux下安装Qt5.7后添加qmake环境变量后出现错误 执行: qmake -v 出现错误:qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’: No such file or directory 分析: qtchooser默认选择路径中没有指向qmake路径 解决方法: cd /usr/lib/x86_64-linux-gnu/qt-default/qtchooser sudo vim default.conf…
在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成与使用方式是不同的.刚开始可能会不适应,但是用多了应该会习惯这种使用,因为步骤上并没有VS下配置那么繁琐.下面就分别总结下linux下生成并使用静态库与动态库的方法:(由于是C++项目,所以编译器用的g++,但是与gcc的使用是相通的) 首先是准备工作,把我们需要…
测试程序test.cpp如下所示: #include <iostream> using namespace std; #define MAX 9 int main() { //just for test cout << MAX << endl; cout << "Hello world!" << endl; } g++编译主要分为四个阶段进行,即预处理(Preprocessing).编译(Compilation).汇编(Ass…
转载于:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/22/1782678.html 1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] (3).有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] (4).连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename …
1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).汇编,将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] (3).编译,将汇编语言文件编译为目标代码(机器代码)生成.o的文件[汇编器as] (4).链接,将目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename   设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C…
这篇博客很有必要写下来,记录我在一个比较原生的Linux系统上搭建一套应用所遇到的各种问题和各种坑. 关于这套应用,算是我离职前的一个项目,不完成的话没有办法交差,同时,这个项目也比较紧,合作行一直在催,所以我搭建的时候也比较着急,我在Linux搭建应用也没有什么经验,准确地说搭建c++的项目没有经验,c++的项目不像java,java运行在虚拟机上,一次编译,可以在其他机器上运行,但是c++不行,你需要重新编译,一旦重新编译,问题就全来了,原来的代码依赖的一个库文件可能是32位的,现在系统是6…
转自:https://blog.csdn.net/killwho/article/details/53785910 引用:http://www.linuxdiyf.com/linux/16754.html 在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 文件没有问题,但是编译(这一步应该是链接)为可执行文件的时候会出现找不到’xxx’的定义的情况. 例如: g++ -o spider   -rdynamic -lpthread -levent -lcrypt -ldl blo…
本文将有以下4个部分来讲如何使用g++编译调用dll的c++代码. 1.如何调用dll 2.动态链接和静态链接的区别 3.g++的编译参数以及如何编译调用dll的c++代码 4.总结 1.如何调用dll 动态链接库(Dynamic Link Library),简称DLL.DLL 是一个包含可由多个程序同时使用的代码和数据的库.它允许程序共享执行特殊任务所必需的代码和其他资源,一般来说,DLL是一种磁盘文件,以.dll..DRV..FON..SYS和许多以.EXE为扩展名的系统文件都可以是DLL.…
1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] (3).有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] (4).连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename    设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很…
文件目录结构体为: src 和include 分别用来存放.cpp文件和 .hpp文件 其中:src文件夹下有需要的文件 simulator_client.cpp crc32.cpp : include文件夹下有对应的头文件 simulator_client.hpp.crc32.h及使用的头文件cJSON.h 使用命令编译时遇到如下问题: g++ simulator_client.cpp  -o simulator_client -lm -I../include/tmp/ccZ5rfZQ.o:…
$ npm install -g express npm ERR! Error: EACCES, mkdir '/usr/lib/node_modules/express' npm ERR! { [Error: EACCES, mkdir '/usr/lib/node_modules/express'] npm ERR! errno: , npm ERR! code: 'EACCES', npm ERR! path: '/usr/lib/node_modules/express', npm ER…
在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么东西,遂决定回到windows. 回到windows里面第一件事就是想把Linux里面的vim完美移植到windows.花了两天功夫,大部分功能已基本能够实现.当中遇到的最大困难是在windows里面实现用gcc/g++编译调试c/cpp文件,现在就把我这个过程完整记录下来. 1,首先下载安装Min…
解决php configure: error: Cannot find ldap libraries in /usr/lib.错误 iitshare 分类:Linux,PHP,项目实施 | 标签:Cannot find ldap libraries in /usr/lib., configure: error: |1Comment发表评论   错误说明 今天在centos 6.3 64位版本上安装PHP5.4.3时在./configure 步骤的时候出现了下面错误configure: error…
gcc和g++现在是gnu中最主要和最流行的c&c++编译器.g++是c++的命令,以.cpp为主:对于c语言后缀名一般为.c,这时候命令换做gcc即可.编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接. gcc和g++都是GNU(组织)的一个编译器.但两者有一些区别:后缀为.c的文件gcc把它当做c程序,g++当做c++程序.后缀为c++的两者都当做c++程序.对于cpp程序,无论gcc或者是g++编译阶段都是相同的,都是用的gcc进行编译,但是在链接阶段gcc不能自动和c…
gdb调试c程序打不到断点的原因可能是编译c文件的时候没有加-g选项,-g选项是编译加debug信息的,不加是打不到断点的 g++编译cpp文件 g++ -g -c *.cpp       编译 g++ -g -o exec *.o   链接 或 g++ *.cpp -o exec g++编译生成.a 静态库文件,.so为动态库 gcc *.cpp -lcp-demangle -o exec 选项 -l (ell) 通过添加前缀 lib 和后缀 .a 将跟随它的名字变换为库的名字 libcp-d…
今天编译caffe ,本来编译过无数次caffe了,基本坑都能解决的.但这次惹恼我了.一直搞不定. 错误信息是这样的: /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8: undefined reference to `TIFFIsTiled@LIBTIFF_4.0' /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8: undefined reference to `TIFFOpen@…
比如错误为: usr/bin/ld: cannot find -labc 首先要明白的是 labc 代表的是 libabc.so 明白了这个之后,我们就知道了问题是:在编译的过程中,需要 libabc.so 库 而系统又找不到这个库 解决方法是,手动找到这个库. 你可能会发现,系统中可能已经有 libabc.so 但是不在默认查找路径(/usr/lib之类的路径),而是在你自己随便放的一个路径里. 或者是你没找到这个库,但是找到类似 libabc.so.1.0 这种带版本号的库. 如果是上述两种…
dll.cpp,用vc2017编译 #include <iostream>#include <windows.h> extern "C" __declspec(dllexport) void Go() { std::cout << "go" << std::endl;} BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lp…
命令: 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/I…
1.下载QT5 SDK 下载地址:http://qt-project.org/downloads. 2.安装QT5 下载完后,假设放在Download/,切换到该目录,输入:./qt-linux-opensource-5.0.0-x86-offline.run运行: 出现以下错误:./qt-linux-opensource-5.0.0-x86-offline.run: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (req…
用gcc静态编译C程序时显示出: /usr/lib/ld: cannot find -lc /usr/lib/ld: cannot find -lgcc_s /usr/lib/ld: cannot find -lm /usr/lib/ld: cannot find -lgcc_s 的错误.主要问题出在静态编译时需要链接静态库,将动态库编译到文件中,去掉此参数是没问题. 非静态编译时 ldd filename,显示如下,这是可执行程序所需要的动态库,运行可执行程序时需要如下动态库. linux-g…
原因是没有GLIBCXX_3..15版本,或是更高的版本. 一.查看并下载 32位系统: [root@localhost ~]# strings /usr/lib/libstdc++.so. | grep GLIBCXX 下载新版本,地址:http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb 64位系统: [root@localhost ~]# strings /usr/lib64/libs…
编译出现的问题解决方法: 打开终端输入,qmake -v,出现错误:qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory 需要修改:                /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf  文件内容,里面第一行内容为默认的编译器. 修改default.conf文件内容.终端命…
在学习gcc静态库动态库编译的时候选用静态库编译时出错显示:/usr/lib/ld:cannot find -lc 百度:/usr/lib/ld:cannot find -lc多处给的解决方案为: 然而并不能解决问题,最终定位发现是静态编译的问题.而且不止会出现这种情况: /usr/lib/ld:cannot find -lc /usr/lib/ld:cannot find -lgcc_s /usr/lib/ld:cannot find -lm 等的错误,主要原因在静态编译时需要链接静调库.如上…
今天在linux中使用个g++编译一个名为myfirst.cpp的代码的时候,出现如下错误 myfirst.cpp: In function ‘int main()’:myfirst.cpp:11:2: warning: ‘char* gets(char*)’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] gets(cc); ^myfirst.cpp:11:9: warning:…
在Java1.8以上,安装以后再安装目录是自动生成一个release文件,用于记录Java和系统信息.但是在centos中,如果你的Java是在安装系统时选择自动安装的,那么在标题那个目录下,也就是jdk1.8目录是没有release文件的. 在一些应用场景中,是会读取这个文件的信息的.比如终端启动Scala,如果没有这个文件,就会提示:"cat: /usr/lib/jvm/java-1.8.0-openjdk/release 没有这个文件或目录" 解决方法: 我们在终端中,进入这个目…