欢迎来到天天文库
浏览记录
ID:50516295
大小:47.94 KB
页数:2页
时间:2020-03-06
《gcc编译报错解决方案.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Gcc最基本的用法是∶gcc[options][filenames]其中options就是编译器所需要的参数,filenames给出相关的文件名称。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。-ooutput_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。1.linkerinputfileunusedbecauselink
2、ingnotdone我在Windows下使用SQLite编了个C++程序,在编写Makefile并使用cygwin中的g++进行编译链接时遇到如下的错误:linkerinputfileunusedbecauselinkingnotdone我的语句是g++-ca.cpp-lsqlite3到网上查了一下,问题出在链接数据库的语句不应出现在编译语句里面。上面的语句里面有-c即编译compile,所以命令会忽略掉所有的-l链接库的命令。而要链接数据库,应该在生成可执行文件时才使用。正确的使用链接的语句应该是g++a.o-L.-ls
3、qlite3-oexename2.Linux系统的头文件和库文件搜索路径**#include**的头文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。·当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()·写在specs内的(针对rpm包)·后来用-D-I-L指定的·gcc环境变量设定(编译的时候)·ld.so的环境变量(这是runtime的时候)头文件gcc在编译时如何去寻找所需要的头文件:·headerfile的搜寻会从-I开始·然后找gcc的环境变量C_INCLUDE_PAT
4、H,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH·再找内定目录:o/usr/includeo/usr/local/includeo/usr/lib/gcc-lib/i386-linux/2.95.2/includeo/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3o/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include·库文件但是如果装gcc的时候,
5、是有给定的prefix的话,那么就是o/usr/includeoprefix/includeoprefix/xxx-xxx-xxx-gnulibc/includeoprefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include库文件cos()等函式库的选项要多加-lm·编译的时候:gcc会去找-L·再找gcc的环境变量LIBRARY_PATH·再找内定目录/lib/usr/lib/usr/local/lib这是当初compilegcc时写在程序内的运行时动态库的搜索路径1在配置文
6、件/etc/ld.so.conf中指定动态库搜索路径2通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)3在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。这是通过gcc的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔)4默认的动态库搜索路径/lib5默认的动态库搜索路径/usr/lib动态库的搜索路径搜索的先后顺序是:1编译目标代码时指定的动态库搜索路径;2环
7、境变量LD_LIBRARY_PATH指定的动态库搜索路径;3配置文件/etc/ld.so.conf中指定的动态库搜索路径;4默认的动态库搜索路径/lib;5默认的动态库搜索路径/usr/lib。
此文档下载收益归作者所有