亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 6714 | 回復(fù): 5
打印 上一主題 下一主題

鏈接lua靜態(tài)庫(kù)出錯(cuò),幫忙阿 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-01-22 21:18 |只看該作者 |倒序?yàn)g覽
用nm 查看庫(kù)liblua.a 函數(shù)明明就在那里
00000e98 T luaL_loadfile
為什么gcc  calllua.c -Lmyluadir -llua仍然出錯(cuò)

/tmp/ccfdyd0o.o(.text+0xf3): In function `main':
: undefined reference to `luaL_loadfile'

另外myluadir路徑?jīng)]錯(cuò),因?yàn)槿サ?Lmyluadir 則提示找不到lua庫(kù)

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-01-22 22:26 |只看該作者
是不是連接器嘗試找的是共享庫(kù),而你只有靜態(tài)庫(kù)
所以應(yīng)該采用靜態(tài)鏈接方式啊,gcc 增加-static選項(xiàng)
我只是隨便說(shuō)說(shuō)的,自己也不是很清楚

順便關(guān)注一下

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-01-23 11:29 |只看該作者
搞定!

gcc -I/home/lua-5.1.4/src  -L/home/lua-5.1.4/src -llua -lm calllua.c -o calllua
改成
gcc calllua.c -o calllua -I/home/lua-5.1.4/src  -L/home/ua-5.1.4/src -llua  -lm
即可
gcc 對(duì)參數(shù)的順序也有要求?

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-01-23 12:01 |只看該作者
原來(lái)是這樣啊
c專家編程 第五章對(duì)鏈接的思考  一章中提到這個(gè)問(wèn)題了

在  與提取動(dòng)態(tài)庫(kù)中的符號(hào)相比,靜態(tài)庫(kù)中的符號(hào)提取的方法限制更嚴(yán) 一節(jié)中,提到了動(dòng)態(tài)鏈接和靜態(tài)鏈接使用存在的一點(diǎn)差別

在動(dòng)態(tài)鏈接中,所有的庫(kù)符號(hào)進(jìn)入輸出文件的虛擬地址空間中,所有的符號(hào)對(duì)于鏈接在一起的所有文件都是可見(jiàn)的
相反,對(duì)于靜態(tài)鏈接,在處理archive時(shí),它只是在archive中查找載入器當(dāng)時(shí)所知道的未定義符號(hào)

所以在你的這個(gè)例子中,
gcc  -llua -lm calllua.c
因?yàn)樵谔幚?llua的時(shí)候,它前面并沒(méi)有發(fā)現(xiàn)luaL_loadfile這個(gè)未定義符號(hào)的出現(xiàn),所以它沒(méi)有把它加載進(jìn)來(lái),在處理callua.c的時(shí)候就出錯(cuò)了

把-llua -lm放在源文件callua.c的后面 編譯就不報(bào)錯(cuò)了,這是因?yàn)間cc在處理callua.c時(shí)候,發(fā)現(xiàn)了未定義符號(hào)luaL_loadfile,在接下來(lái)的處理中,它會(huì)在-llua所鏈接的庫(kù)中找到luaL_loadfile,所以就不報(bào)錯(cuò)了
gcc calllua.c  -llua  -lm

所以,書(shū)上給了一個(gè)溫馨小提示
始終將 -l函數(shù)庫(kù) 選項(xiàng)放在編譯命令行的最右邊

[ 本帖最后由 zhuhefang2006 于 2009-1-23 12:10 編輯 ]

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-01-24 00:10 |只看該作者
[quot]用nm 查看庫(kù)liblua.a 函數(shù)明明就在那里[/quot]

強(qiáng)烈建議LZ看下動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的區(qū)別啊。

-l 鏈接的是動(dòng)態(tài)庫(kù)

如果鏈接靜態(tài)庫(kù),可以-static(不一定100%管用),一般直接把 liblua.a 文件直接當(dāng)成個(gè) *.o 文件和你的 *.c 文件放一起編譯就可以了。

gcc /home/ua-5.1.4/src/libua.a calllua.c -o calllua -I/home/lua-5.1.4/src  -lm

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-03-20 14:57 |只看該作者

回復(fù) #4 zhuhefang2006 的帖子

強(qiáng),頂你一下!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP