设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
Linux 下 c 的函数库路径问题
返回列表
发新帖
Linux 下 c 的函数库路径问题
[复制链接]
11
|
7
|
2021-1-27 06:25:47
|
显示全部楼层
|
阅读模式
[lz@localhost~]$gcc-ofile1file1.c/lib64/libm.so.6
[lz@localhost~]$chmod744file1
[lz@localhost~]$./file1
pleaseinputthevalueofi:
4
thesqrtofiis2.
[lz@localhost~]$lddfile1
linux-vdso.so.1=>(0x00007fff22b60000)
libm.so.6=>/lib64/libm.so.6(0x00000037b7200000)
libc.so.6=>/lib64/libc.so.6(0x00000037b6a00000)
/lib64/ld-linux-x86-64.so.2(0x00000037b6200000)
[lz@localhost~]$rmfile1
[lz@localhost~]$exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64
[lz@localhost~]$gcc-ofile1file1.c
/tmp/cctalcbc.o:Infunction`main':
file1.c:(.text+0x43):undefinedreferenceto`sqrt'
collect2:ldreturned1exitstatus
问题是这样的:file1.c调用了math.h中的函数
gcc-ofile1file1.c-lm这样运行成功,但谁也不能知道每个库函数lib后的字母是什么进而可以-l这样动态的链接。
所以我想把LD_LIBRARY_PATH赋值(先只是暂时赋值)ldd命令查看libm.so.6=>/lib64/libm.so.6(0x00000037b7200000)库函数/lib64目录下,所以exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64希望它可以动态链接。
但结果仍是:file1.c:(.text+0x43):undefinedreferenceto`sqrt'
求解答:
我现在想知道:
1.c函数库对应linux的路径名即math.h对应-lm(这样就行我听人说网上有这样的表格)
2.我就想知道c库函数的路径:/usr/lib什么的我几乎所有的都试了/lib64:/lib:/usr/lib64:/usr/lib:/usr/local/lib这些都不好使,我用的是[红帽企业Linux.6.4.服务器版]的镜像。
知道一条也行
分 -->
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
1、不知道使用的函数在哪个动态库上,可以man一下,里面都写有要链接哪个库,比如你这里用的sqrt,
mansqrt的前几行如下:
SQRT(3)LinuxProgrammer'sManualSQRT(3)
NAME
sqrt,sqrtf,sqrtl-squarerootfunction
SYNOPSIS
#include
doublesqrt(doublex);
floatsqrtf(floatx);
longdoublesqrtl(longdoublex);
Linkwith-lm.
再比如:
manpthread_create
PTHREAD_CREATE(3)LinuxProgrammer'sManualPTHREAD_CREATE(3)
NAME
pthread_create-createanewthread
SYNOPSIS
#include
intpthread_create(pthread_t*thread,constpthread_attr_t*attr,
void*(*start_routine)(void*),void*arg);
Compileandlinkwith-pthread.
这里面都有写linkwithXXX了。
2、LD_LIBRARY_PATH环境变量是指定链接器可以在哪个目录查看动态库,而程序要连接哪个动态库是由-l参数指定的,链接器不会自动去找。
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
引用1楼wangzuxi的回复:
1、不知道使用的函数在哪个动态库上,可以man一下,里面都写有要链接哪个库,比如你这里用的sqrt,
mansqrt的前几行如下:
SQRT(3)LinuxProgrammer'sManualSQRT(3)
NAME
sqrt,sqrtf,sqrtl-squarerootfunction
SYNOPSIS
#include
doublesqrt(doublex);
floatsqrtf(floatx);
longdoublesqrtl(longdoublex);
Linkwith-lm.
再比如:
manpthread_create
PTHREAD_CREATE(3)LinuxProgrammer'sManualPTHREAD_CREATE(3)
NAME
pthread_create-createanewthread
SYNOPSIS
#include
intpthread_create(pthread_t*thread,constpthread_attr_t*attr,
void*(*start_routine)(void*),void*arg);
Compileandlinkwith-pthread.
这里面都有写linkwithXXX了。
2、LD_LIBRARY_PATH环境变量是指定链接器可以在哪个目录查看动态库,而程序要连接哪个动态库是由-l参数指定的,链接器不会自动去找。
写错了一个字:查找动态库,不是查看
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
您回答的对我帮助很大,
但有的用man好像没啥用,我manstrcpy
它并未说linkwith...这时候怎么办?
第二条您说的LD_LIBRARY_PATH环境变量是指定链接器可以在哪个目录查看动态库,而程序要连接哪个动态库是由-l参数指定的
是不是就是说在/etc/profile或.bash_proflie中设置LD_LIBRARY_PATH环境变量都不能使程序自动连接函数库;
那您知道有什么方法可以有效地自动连接函数库。用到库函数多的时候总用-l连接不是很方便吧。
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
PATH只是指明路径
在编译时只要加上-lm这样简写就行,
若没有配置LIB_PATH环境等,则编译时需要加全路径
另外除了最基本的库是不用连的以外,
用到别的库(.a/.so)函数都是要在编译时加上-lmor-L/lib64-lm等
编译一下他就会报哪些函数找不到了,加入相应的库就行了
可以看看makefile教程
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
指定头文件,再makefile中用-I指定。
静态库和动态库方式一样,都是-L路径,-lxxx库
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
引用3楼qq_25103581的回复:
您回答的对我帮助很大,
但有的用man好像没啥用,我manstrcpy
它并未说linkwith...这时候怎么办?
第二条您说的LD_LIBRARY_PATH环境变量是指定链接器可以在哪个目录查看动态库,而程序要连接哪个动态库是由-l参数指定的
是不是就是说在/etc/profile或.bash_proflie中设置LD_LIBRARY_PATH环境变量都不能使程序自动连接函数库;
那您知道有什么方法可以有效地自动连接函数库。用到库函数多的时候总用-l连接不是很方便吧。
用到库函数也不是全都用-l,一些基本的像内存操作字符串操作这些都不用加-l,manstrcpy没有说linkwith...就说明它不需要用动态库。
回复
使用道具
举报
千问
|
2021-1-27 06:25:47
|
显示全部楼层
那是不在linux编写c和c++时不必过分担心链接库文件的问题,一部分不需要动态链接库,另一部分编译时需要链接库,用命令man即可解决
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
四室二厅二卫 新房 180平米 装修
2
关于显卡高手进....
3
火影动画和漫画各出到多少集了?
4
急求唐山城市规划文本及图片资料~~~~~!!~~
5
本人只用身份证能带到钱吗
6
50分等于多少
7
书荒啦,有什麼好书介绍一下哈!
8
江淮和悦 奇瑞A3 奇瑞瑞虎哪个好
9
腾迅系统消息说我中奖了
10
Bondo Mongo怎么翻译?《史密斯夫妇》中插曲的名字。
11
加拿大的卡尔顿大学和萨省大学哪个好?
12
婚前男方买地,婚后夫妻双方把房子建起来,财产怎么分
13
怎样鼓励我现在读高三的一个同学?
14
为什么我用Nero刻录显示的是刻录已完成但光盘里却是空的?
15
qq电子邮件格式
16
坐标系内求距离公式
17
赛尔号换口袋精灵2号
18
冻过的香肠能吃吗
19
西城区的中学大排名
20
2010《道路交通安全法》处罚标准?
21
有哪家驾校是用的吉利自由舰作为考试成型的!
22
第18届少年百科知识竞赛答案
23
90后的摩羯女生
24
Thai () dresses are very beautiful
25
百度HI的积分可以捐了吗?
26
若根号下-(2/x)有意义,则x的取值范围是____
27
书写体的小q有小尾巴吗
28
多普达D900刷机
29
百花释放多少算是合格 还有智力/ 攻速 /魔攻
30
关于都市小说
31
生活中的烦恼
32
thinkpad 网线口绿灯不亮只有黄灯闪烁
33
萨马兰奇追悼会
34
读《汤姆索亚历险记》有感,500字左右,急~~~~~~~~~~~~~~~~~~~
35
学车的刹车问题
36
初中物理电路实验找出故障原因
37
但爸爸从来都没有怨言,对工作一直兢兢业业。的英语怎么写
38
我想玩北京北海后海一带大家谁能帮我安排一下时间,先玩哪一个比较合适。谢谢!
39
放飞理想诗歌
40
为什么我的仙剑三玩到打败邪剑仙后就玩不了了···哪位可以告诉我··谢谢了
41
c语言代码总是错
42
QQ农场被封了怎么样才能在开通
43
深圳2009中考体育评分标准
44
我们会长久么
45
求救 小龟眼睛好像看不见了!!但看不出什么白眼病的症状啊 能睁开眼也不肿也没有白膜 可就是看不见食物了
46
桓台到张店一中乘车路线
47
太阳风暴会不会摧毁100%的电力系统 如何应对?
48
初二数学题,急
49
银杏,大熊猫,小熊猫哪个不称为 活化石?
50
英雄萨姆2有没有汉化补丁?
51
上机网问题 电脑高手进
52
海信n51手机视频不能快进了,帮帮忙
53
离子检验问题
54
上海SB会真的花了4000个亿吗?!
55
亲情号码免费是不是长途费也免了呢?
56
重汽HOWO出现刹车灯故障怎么回事
57
赛尔号浅蓝攻略网有毒吗
58
外G高手进
59
ss宏,献祭后接点燃宏
60
由交通事故导致十级伤残 另一方已亡 应赔偿吗?
61
FM2009怎么比赛
62
我的电脑被人控制开关机怎么办
63
冒险岛80战神哪练级最快?
64
彩虹岛天神 王者账号
65
初二分解因式题构造一个满足以下条件的多项式
66
在WORD文档中竖排文字时,怎样使数字站起来,不躺着?如:2004~2005年
67
我国对待公有制经济的态度
68
老婆是农村户口,迁到城里来好吗?
69
hotmail怎样设置成outlook
70
离婚财产如何分割
71
我用过的祛痘产品都没有效果,那我该怎么才能祛除脸上的痘痘
72
金山毒霸09版免费版有用吗
73
求2005 到2009的广东高考试题!!
74
诛仙有哪些任务金丹多 推荐一下吧。。
75
辞职跟领导谈话,我告诉他我要去哪个公司了,但是有点后悔了,怕他跟我要去的那个公司的人事捣鬼
76
流水问题用二元一次方程怎么解?比如下面这道题!
77
流星蝴蝶剑鬼步怎么练????
78
雨林木风 Ghost xp sp3 装机版 YN30.0 怎么安装
79
四个月的泰迪5磅的狗粮能吃多久?
80
请以爱护地球为主题写一段话
81
帮我写篇大学毕业论文《高消费的利弊分析》6000字
82
上课看小说被举报涛同学,然后写检讨
83
今年世博会,那五一去凤凰玩的人会不会很多???29号从湘潭出发。
84
qq密码被人知道了。刚刚被人登陆了
85
求ESET NOD32 EAV版 24位激活码-
86
2010年4月22日郑州上空惊现地震云!!!特来求证!!!
87
求按要求写松树的词语
88
自考论文答辩用不用给指导老师钱??
89
单片机89c668设计一个方波的信号发生器 求高手指点
90
动漫地下城与勇士中魔法师用的是什么武器
91
请问2010年湖北咸宁教师资格证申请时间是多少?
92
用WinKawaks玩拳皇十周年纪念版为什么按了投币没反应啊、?
93
我有存折及她的身份证及密码,但她在外地,我现在急需用钱。请问我拿我妈的存折去取钱,可以取到吗?
94
幽城幻剑录找不到往西北方营救的商队???
95
跪求翻译 个人简历 多谢!!!
96
怎么免费装扮qq空间
97
阳历4月28日出生的是什么星座?
98
我该问我妈要多少钱?