中国Linux公社论坛's Archiver

gofortime 发表于 2009-3-3 00:30

关于添加gcc库路径的问题

我是个linux编程新手,使用的系统是fedora9,编程语言是C。我用的编译系统是gcc(系统自带),gcc有默认的头文件和库文件所搜路径(/usr /include和/usr/lib,这个应该没错吧?)。现在我想让gcc能够搜索我自己编写的一些头文件和库文件,我的做法如下,请帮忙分析下:
    (1)新建自己的头文件路径/home/user/workspace/include和库文件路径/home/user/workspace/lib,这两个目录用来存放我自己编写的头文件和库文件;
    (2)接下来写个头文件和库文件作测试,在/home/user/workspace/include下新建文件test.h,在/home/user/workspace/lib下新建test.c,test.h中是一些函数原型,test.c是函数的实现;
    (3)通过命令gcc -fPIC -shared -o libtest.so test.c在/home/user/workspace/lib生成了一个动态链接库文件libtest.so;
    (4)现在把库文件路径添加进.bash_profile文件,添加内容如下:
# my code
C_INCLUDE_PATH=/home/cheney/workspace/include
export C_INCLUDE_PATH
LD_LIBRARY_PATH=/home/cheney/workspace/lib
export LD_LIBRARY_PATH
然后通过source .bash_profile把.bash_profile文件即时更新了;
    (5)编一个程序进行测试,代码如下:
//main.c
#include<test.c>
int main()
{
    test();//test函数的原型在test.h中,具体实现在test.c中
    return 0;
}
    (6)然后通过gcc main.c -ltest -o main编译,但是总提示“cannot find -ltest ".

    请问这是什么原因?是库文件路径添加方法错误吗?值得注意的是:我通过gcc main.c /home/user/workspace/lib/libtest.so -o main可以通过编译,运行结果也是正确的。但是每次编译都输入完整路径就很麻烦了。我希望每次只要给出库文件的名称(如-ltest)就能够自动搜索该库文件,请问应该怎么解决?希望有人能抽出点宝贵的时间帮我解答,谢谢!

superhxl 发表于 2009-11-4 14:11

怎么没人回答这个问题呢,我也遇到类似的问题了!

JCheung 发表于 2010-8-30 12:11

不用更改bash环境 -_-|||

你就不会看下gcc到手册么? 中英都有。
你难道不会 gcc --help么?
查看gcc -I -L吧。。注意两个都是大写的 大小写不同,用途不一样

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.