Linux头文件和库文件路径问题

xhuacmer 2010-07-02 11:08:40
我是刚从windows vc环境转到Linux进行开发,有一个很基本的问题还有疑问,麻烦各位帮我解答一下哈!
比如 gcc -o fred -I/usr/openwin/include/ fred.c
gcc -o fred fred.c -L/usr/lib/ libm.a

这两句编译命令有什么区别? 主要是-I,-L选项的区别。如果我的头文件放在另一个目录下(如usr/openwin/hh),库文件也放在另一个目录下(如/usr/lib)应该怎么做? 随便给我解释一下Linux下库文件是什么概念,是已经编译成目标文件的集合吗?
谢谢!!
...全文
332 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhuacmer 2010-07-02
  • 打赏
  • 举报
回复
谢谢各位的回答!分我就随便分配哈
ericming200409 2010-07-02
  • 打赏
  • 举报
回复
库文件和windows的概念都是一样的拉,分为动态链接库和静态库
mao_pu_hua 2010-07-02
  • 打赏
  • 举报
回复
-I指向头文件的目录,-L指向库文件目录。
-Iusr/openwin/hh -L/usr/lib -lm 这个库文件不需要前面的lib和后面的.a
.a是静态链接库
bluejays 2010-07-02
  • 打赏
  • 举报
回复
随便给我解释一下Linux下库文件是什么概念,是已经编译成目标文件的集合吗?
差不多就是这样吧。

比如,如果代码里面用到了pthread_系列的函数,编译的时候就要-lpthread,指定链接库文件libpthread.a,那里面就是pthread_系列函数预先编译好的目标码。
pottichu 2010-07-02
  • 打赏
  • 举报
回复
-I 是包含头文件的目录
-L 是包含库文件的目录

linux 下的 .so 跟 windows 下的 dll 概念差不多,都是动态连接的意思。
.a 文件是静态库。
bluejays 2010-07-02
  • 打赏
  • 举报
回复
gcc -o fred -I/usr/openwin/hh -L/usr/lib fred.c
yzx714 2010-07-02
  • 打赏
  • 举报
回复
这些都可以Google到
abcdef0966 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xhuacmer 的回复:]
难道就不能像windows下面一样 同一个项目就把头文件和源文件放在同一目录 Linux为什么要把头文件放在别处呢(如/usr/openwin/include)??
[/Quote]

觉得分开放还更好哦,不过在linux下一样可以放在一起啊。分开放更清晰吧
lybhzhl2009 2010-07-02
  • 打赏
  • 举报
回复
3楼的解释的很清楚了哦。
xhuacmer 2010-07-02
  • 打赏
  • 举报
回复
原来这样 都差不多 差不多
zhjl1314 2010-07-02
  • 打赏
  • 举报
回复
你说的是公共头文件吗?
windows下面也一样吧 ...

如果说是私人的头文件
那是一种习惯
在项目中你的头文件也许别人会用到
放到公共目录下面比较方便别人找到
Dobzhansky 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xhuacmer 的回复:]

难道就不能像windows下面一样 同一个项目就把头文件和源文件放在同一目录 Linux为什么要把头文件放在别处呢(如/usr/openwin/include)??
[/Quote]如果你先学习 unix, 后学 windows, 问题就会反过来了, 没事的, 适应一下就好了.
xhuacmer 2010-07-02
  • 打赏
  • 举报
回复
难道就不能像windows下面一样 同一个项目就把头文件和源文件放在同一目录 Linux为什么要把头文件放在别处呢(如/usr/openwin/include)??

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧