Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2085862
  • 博文数量: 414
  • 博客积分: 10312
  • 博客等级: 上将
  • 技术积分: 4921
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-31 01:49
文章分类

全部博文(414)

文章存档

2011年(1)

2010年(29)

2009年(82)

2008年(301)

2007年(1)

分类: C/C++

2009-03-07 10:08:42

写了一个hello world程序
// hello.cpp
#include
using namespace std;
int main()
{
cout<<"hello world.\n";
return 0;
}

然后敲入指令g++ hello.cpp
我并没有指定iostream头文件及其库文件在哪,g++是怎么找到这些文件的呢?


如果没有在编译参数中指定,编译器会去默认的地方去找。

如/usr/include,/lib等!


这里默认的地方是不是就是环境变量中的
CFLAGS
LD_LIBRARY_PATH
这两个变量来找头文件和库文件吗,可是我把CFLAGS设置为空,再g++ hello.cpp,还是能够编译成功。
是不是以上变量是用来添加额外的。


/usr/include /lib /usr/lib 这些路径不用参数,也不用环境变量,gcc 自动找,也许是在 spec 里的。


如果你的Makefile里面没有指定搜索路径,那么make就在当前目录和文件夹下查找文件。所以Make没有找到代 *** 包含的库文件。
有两种方法指定搜索路径:
1. 使用特殊变量"VPATH"。如果定义了这个变量,那么,make就会在当当前目录找不到的情况下,到所指定的目录中去找寻文件了。
   使用方法是
   VPATH=src:mydoc
    Make就会搜索上面的两个文件夹。不同的文件夹用:隔开。
2. 用vpath语句。
  vpath %.c src:mydoc
    表示在这两个文件夹中搜索.c的文件。


是在specs里面读取的路径信息。
命令行中键入 gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --ver
bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libe
xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-langu
ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --
enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-thre
ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptio
ns --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)


注意“--prefix=/usr” 以及“--libdir=/usr/lib ”
表示gcc ld as 等可执行文件安装在/usr/bin,而libc.a 等文件是在/usr/lib中。
解压缩交叉编译器时,也是要解压缩在在--prefix 指定的目录下。
比如 下载了arm-linux 的交叉编译器cross-3.3.2.tar.bz2,解压缩之后,运行 arm-linux-gcc -v
得到 --prefix=/usr/local/arm。那么就要把 bin lib 等所有的文件和文件夹copy到/usr/local/arm目录下。
否则到时候运行arm-linux-gcc hello.c会提示找不到stdio.h 或者 lib.so.6 等

这个简单的问题也让我吃了不少苦头。。。
阅读(3788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~