2011-04-09 61 views
2

我剛開始在Linux編程。 我想編一個名爲「蜘蛛」搜索某一類型的正則表達式的程序。所需的庫是PCRE,OpenSSL和libexpat。我安裝了庫,出於某種原因,它們沒有鏈接。鏈接庫

spider.c: In function ‘craft_csv_entry’: 
spider.c:1261: warning: format ‘%lld’ expects type ‘long long int’, but argument 4 has type ‘__off_t’ 
spider.c:1261: warning: format ‘%lld’ expects type ‘long long int’, but argument 4 has type ‘__off_t’ 
spider.c: In function ‘read_maxgroups’: 
spider.c:2218: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘XML_Size’ 
/tmp/ccZ2CUHF.o: In function `main': 
spider.c:(.text+0xd2): undefined reference to `pcre_callout' 
/tmp/ccZ2CUHF.o: In function `load_regexes': 
spider.c:(.text+0x3db): undefined reference to `pcre_compile' 
spider.c:(.text+0x440): undefined reference to `pcre_study' 
/tmp/ccZ2CUHF.o: In function `compile_regexes': 
spider.c:(.text+0x4d3): undefined reference to `pcre_compile' 
spider.c:(.text+0x4f5): undefined reference to `pcre_study' 
spider.c:(.text+0x52f): undefined reference to `pcre_compile' 
spider.c:(.text+0x551): undefined reference to `pcre_study' 
spider.c:(.text+0x58b): undefined reference to `pcre_compile' 
spider.c:(.text+0x5ad): undefined reference to `pcre_study' 
/tmp/ccZ2CUHF.o: In function `is_match': 
spider.c:(.text+0xad2): undefined reference to `pcre_exec' 
spider.c:(.text+0xb6e): undefined reference to `pcre_exec' 
spider.c:(.text+0xc0a): undefined reference to `pcre_exec' 
spider.c:(.text+0xcbc): undefined reference to `pcre_exec' 
/tmp/ccZ2CUHF.o: In function `set_globals': 
spider.c:(.text+0x1e95): undefined reference to `log' 
spider.c:(.text+0x1ed1): undefined reference to `pow' 
/tmp/ccZ2CUHF.o: In function `craft_csv_entry': 
spider.c:(.text+0x21fa): undefined reference to `MD5_Init' 
spider.c:(.text+0x225d): undefined reference to `MD5_Update' 
spider.c:(.text+0x22b2): undefined reference to `MD5_Final' 
/tmp/ccZ2CUHF.o: In function `read_maxgroups': 
spider.c:(.text+0x4498): undefined reference to `XML_ParserCreateNS' 
spider.c:(.text+0x4513): undefined reference to `XML_SetUserData' 
spider.c:(.text+0x452e): undefined reference to `XML_SetElementHandler' 
spider.c:(.text+0x4549): undefined reference to `XML_SetNamespaceDeclHandler' 
spider.c:(.text+0x45b6): undefined reference to `XML_GetBuffer' 
spider.c:(.text+0x466a): undefined reference to `XML_ParseBuffer' 
spider.c:(.text+0x4679): undefined reference to `XML_GetErrorCode' 
spider.c:(.text+0x4681): undefined reference to `XML_ErrorString' 
spider.c:(.text+0x468e): undefined reference to `XML_GetCurrentLineNumber' 
/tmp/ccZ2CUHF.o: In function `spider_encrypt': 
spider.c:(.text+0x491c): undefined reference to `EVP_CIPHER_CTX_init' 
spider.c:(.text+0x4921): undefined reference to `EVP_bf_cbc' 
spider.c:(.text+0x4943): undefined reference to `EVP_EncryptInit' 
spider.c:(.text+0x499d): undefined reference to `EVP_EncryptUpdate' 
spider.c:(.text+0x4a2e): undefined reference to `EVP_EncryptFinal' 
spider.c:(.text+0x4a81): undefined reference to `EVP_CIPHER_CTX_cleanup' 
/tmp/ccZ2CUHF.o: In function `spider_decrypt': 
spider.c:(.text+0x4b82): undefined reference to `EVP_CIPHER_CTX_init' 
spider.c:(.text+0x4b87): undefined reference to `EVP_bf_cbc' 
spider.c:(.text+0x4ba9): undefined reference to `EVP_DecryptInit' 
spider.c:(.text+0x4be4): undefined reference to `EVP_DecryptUpdate' 
spider.c:(.text+0x4c9d): undefined reference to `EVP_DecryptFinal' 
spider.c:(.text+0x4d26): undefined reference to `EVP_CIPHER_CTX_cleanup' 
collect2: ld returned 1 exit status 
+3

如果你不顯示的鏈接命令行,我們也沒有辦法。 – bmargulies 2011-04-09 12:42:38

+0

這個應用程序的編譯如何與您的編程嘗試相關?這似乎不是一個編程相關的問題...... – 2011-04-09 12:44:26

+0

@Felix克林 - 編程包括建立所需要的文本 - 構建腳本是一樣多的代碼C源文件 - 但與源我們確實需要看到代碼。 – Mark 2011-04-09 12:53:35

回答

2

您需要明確鏈接到庫。有可能到頭來你需要添加-llibpcre -llibssl-llibexpat,但這些名稱可能是不同的(基於庫的libnames - 這些都應該是一樣的,你安裝的軟件包的名稱,或者其適用的u和.so文件)

+4

+1。這將最有可能的是'-lpcre -lssl -lexpat',命名規範建議,如果你有SONAME'libmycoolstuff.so.0'庫,你放棄了'lib'。在可用的地方使用'pkg-config'可能是一個好主意,所以我們知道準確使用什麼。 – 2011-04-09 13:30:29

4

試試這個:

gcc -o spider spider.c -I/usr/local/include -I/usr/include -L/usr/local/lib -L/usr/lib -lpcre -lssl -lcrypto -lexpat