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

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

Chinaunix

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

[C] 靜態(tài)編譯問(wèn)題:warning: Using 'getaddrinfo' in statically linked ... [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-11-25 10:12 |只看該作者 |倒序?yàn)g覽
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netdb.h>

  5. int main(int argc, char *argv[])
  6. {
  7.         struct addrinfo hints;
  8.         struct addrinfo *result;

  9.         getaddrinfo(NULL, argv[1], &hints, &result);       
  10. }
復(fù)制代碼
編譯命令:
gcc -static a.c

In function `main':
a.c.text+0x2d): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-11-25 11:19 |只看該作者
剛看了下solaris平臺(tái)的man getaddrinfo
cc [ flag... ] file ... -lsocket  -lnsl  [ library ... ]

修改編譯命令(ubuntu-10.04):
gcc -static a.c -lsocket -lnsl
/usr/bin/ld: cannot find -lsocket
/tmp/ccJgnvKd.o: In function `main':
a.c.text+0x2d): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: ld returned 1 exit status

gcc -static a.c -lnsl
/tmp/cc5o1PBe.o: In function `main':
a.c.text+0x2d): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

這個(gè)函數(shù)需要鏈接那個(gè)庫(kù)文件呢?

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-11-25 12:26 |只看該作者
鏈接已經(jīng)成功了,只不過(guò)不建議用 -static

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-11-25 12:49 |只看該作者
編譯命令:
gcc -static a.c

In function `main':
a.c.text+0x2d): warning: Using 'getaddrinfo'  ...
veking 發(fā)表于 2010-11-25 10:12



    它說(shuō)的意思getaddrinfo在動(dòng)態(tài)庫(kù)中,卻用static的方式鏈接了。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-11-25 13:05 |只看該作者
鏈接已經(jīng)成功了,只不過(guò)不建議用 -static
drangon 發(fā)表于 2010-11-25 12:26



    4樓的解釋比較合理

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-11-25 13:08 |只看該作者
它說(shuō)的意思getaddrinfo在動(dòng)態(tài)庫(kù)中,卻用static的方式鏈接了。
lnitcscq 發(fā)表于 2010-11-25 12:49



    用readelf 查看getaddrinfo是UND類(lèi)型,在lib路徑搜索
grep getaddrinfo /usr/lib/*.a
二進(jìn)制文件 libanl.a 匹配
二進(jìn)制文件 libc.a 匹配
二進(jìn)制文件 libcups.a 匹配
二進(jìn)制文件 libgio-2.0.a 匹配
二進(jìn)制文件 libICE.a 匹配
二進(jìn)制文件 libX11.a 匹配
二進(jìn)制文件 libxcb.a 匹配

這些只有l(wèi)ibc.a是FUNCTION類(lèi)型,但是鏈接這個(gè)庫(kù)后也是那個(gè)警告提示。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-11-25 17:27 |只看該作者
沒(méi)人知道嗎?

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-11-25 22:13 |只看該作者
沒(méi)人知道嗎?
veking 發(fā)表于 2010-11-25 17:27



    /* Warning for linking functions calling dlopen into static binaries.  */
#ifdef SHARED
#define static_link_warning(name)
#else
#define static_link_warning(name) static_link_warning1(name)
#define static_link_warning1(name) \
  link_warning(name, "Using '" #name "' in statically linked applications \
requires at runtime the shared libraries from the glibc version used \
for linking")
#endif



static_link_warning (getaddrinfo)



顯示的使用dlopen的代碼(或者使用這種庫(kù),庫(kù)使用dlopen, 比如NSS庫(kù)(具體為什么要顯示dlopen我沒(méi)研究過(guò),總之有一定原因吧))
-static的時(shí)候dlopen函數(shù)的代碼會(huì)被編譯到a.out里面
當(dāng)該a.out在本機(jī)跑的時(shí)候沒(méi)有問(wèn)題,因?yàn)閐lopen和相應(yīng)的動(dòng)態(tài)庫(kù)格式是相互了解的,但是如果在一個(gè)別的系統(tǒng)上
執(zhí)行dlopen時(shí),很可能出錯(cuò)

就是說(shuō)本來(lái)static是為了隨便拿到別的機(jī)器跑,而可能發(fā)生錯(cuò)誤(甚至莫名奇妙的錯(cuò)誤,我現(xiàn)實(shí)中遇到過(guò),幾乎沒(méi)法調(diào)試,以前還不知道原因)
所以有個(gè)警告

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-11-26 08:56 |只看該作者
出現(xiàn)這個(gè)問(wèn)題是因?yàn)殒溄觢ibevent.a引起的,還是沒(méi)搞明白啊。

libevent-1.4.13-stable/http.c:2740: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-11-26 14:30 |只看該作者
出現(xiàn)這個(gè)問(wèn)題是因?yàn)殒溄觢ibevent.a引起的,還是沒(méi)搞明白啊。

libevent-1.4.13-stable/http.c:2740: warn ...
veking 發(fā)表于 2010-11-26 08:56



沒(méi)搞明白什么?
你應(yīng)該是想問(wèn)為什么會(huì)有警告吧
您需要登錄后才可以回帖 登錄 | 注冊(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)專(zhuān)區(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