ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
例如,如果已经在/home/fred/include 下保存了自定义的头文件,那么为了让gcc能够找到它们,可按下面的例子使用-I选项:
$gcc myapp.c -I /home/fred/include -o myapp
-L选项对库文件起的作用和-I选项告诉gcc把DIRNAME添加到库文件搜索路径里,要保证DIRNAME比标准位置先被搜索.
  假设读者需要测试一个新的编程库libnew.so,当前它保存在/home/fred/lib下(.so是共享库文件的标准扩展名).为了链接库文件,gcc命令行应与下面类似:
$gcc myapp.c -L/home/fred/lib -lnew -o myapp
-L/home/fred/lib结构让gcc先在/home/fred/lib下查找库文件,然后再到默认的库文件搜索路径下进行查找.-l选项使得链 接程序使用指定的函数库中的目标代码,也就是本例中的libnew.so.把函数库命名为lib{名字}是UNIX的约定,与许多其他编译器一样,gcc 也遵循此约定.如果忘了使用-l选项,则与库的链接将失败,并且gcc产生错误,说明程序中引用了未定义的函数名.
默认情况下,gcc使用共享库进行链接,所以在需要链接静态库时必须使用-static选项来保证只使用静态库.
$gcc cursesapp.c -lncurses -static -o cursesapp
在链接静态库时,可执行程序的大小比链接共享库要达很多.使用共享库时,程序所使用的代码是在运行时动态链接,而不是在编译时静态链接,因此,如果所需要的共享库没有在用户系统中安装,运行就会失败.
posted on 2005-08-04 22:02 ivaneeo 阅读(2787) 评论(1)  编辑  收藏 所属分类: gcc小试牛力

Feedback

# re: gcc函数库和包含文件 2007-09-24 16:35
请问下 $gcc myapp.c -I /home/fred/include -o myapp
如果是有两个文件夹怎么办?有分号民分隔?
$gcc myapp.c -I /home/fred/include;/home/fred/include -o myapp




邮件 yu200205@126.com  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: