2010-03-09 74 views
2

我試圖建立GreenSQL 1.2.2的Mac OS X 10.5.8 Leopard服務器上,但我得到以下錯誤(這似乎是一個ld錯誤):錯誤的Mac OS X 10.5.8 Leopard Server的建設GreenSQL的1.2.2

cc -g -Wall -I/usr/local/include/ -I/usr/include/mysql/ -I/usr/local/include/mysql/ -DHAVE_MYSQL_CLIENT -fPIC -c -Wall sql_api.c 
cc -g -Wall -I/usr/local/include/ -L/usr/lib64/mysql -L/usr/local/lib/mysql -L/usr/lib/mysql -lmysqlclient -shared -Wl,-soname,libgsql-mysql.so.1 -DHAVE_MYSQL_CLIENT -o libgsql-mysql.so.1 sql_api.o 
ld: unknown option: -soname 
collect2: ld returned 1 exit status 
make[2]: *** [api] Error 1 
make[1]: *** [greensql-fw] Error 2 
cp: greensql-fw: No such file or directory 
make: *** [greensql-fw] Error 1 

我已經建造和安裝(到/usr/local)以下先決條件:PCRE 8.01,libevent的1.4.13穩定,以及MySQL客戶端二進制文件&頭(每http://support.apple.com/kb/TA25017,雖然我在Mac OS X 10.5.8上安裝了MySQL-45.binaries.tar.gz)。

我非常熟悉在Mac OS X上構建開源軟件,但是我不得不承認,我不知道有很多命令行編譯的細節。我之前沒有遇到過ld的錯誤(並且沒有看到Makefile中的任何內容跳出我)。我在ld的手冊頁中找不到-soname選項。

任何建議,將不勝感激。

更新#1:我發現-soname發生在src/lib/Makefile,與-install_name取代,並得到遠一點。現在,我得到如下:

cc -g -Wall -I/usr/local/include/ -I/usr/include/mysql/ -I/usr/local/include/mysql/ -DHAVE_MYSQL_CLIENT -fPIC -c -Wall sql_api.c 
cc -g -Wall -I/usr/local/include/ -L/usr/lib64/mysql -L/usr/local/lib/mysql -L/usr/lib/mysql -lmysqlclient -shared -Wl,-install_name,libgsql-mysql.so.1 -DHAVE_MYSQL_CLIENT -o libgsql-mysql.so.1 sql_api.o 
Undefined symbols: 
    "_compress", referenced from: 
     _my_compress_alloc in libmysqlclient.a(my_compress.o) 
     _my_compress in libmysqlclient.a(my_compress.o) 
    "_main", referenced from: 
     start in crt1.10.5.o 
    "_uncompress", referenced from: 
     _my_uncompress in libmysqlclient.a(my_compress.o) 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make[2]: *** [api] Error 1 
make[1]: *** [greensql-fw] Error 2 
cp: greensql-fw: No such file or directory 
make: *** [greensql-fw] Error 1 

更新#2:進一步的編輯src/lib/Makefile,這次加入-lzCXXFLAGS末得到過去的壓縮誤差。現在的錯誤如下:

cc -g -Wall -I/usr/local/include/ -lz -I/usr/include/mysql/ -I/usr/local/include/mysql/ -DHAVE_MYSQL_CLIENT -fPIC -c -Wall sql_api.c 
i686-apple-darwin9-gcc-4.0.1: -lz: linker input file unused because linking not done 
cc -g -Wall -I/usr/local/include/ -lz -L/usr/lib64/mysql -L/usr/local/lib/mysql -L/usr/lib/mysql -lmysqlclient -shared -Wl,-install_name,libgsql-mysql.so.1 -DHAVE_MYSQL_CLIENT -o libgsql-mysql.so.1 sql_api.o 
Undefined symbols: 
    "_main", referenced from: 
     start in crt1.10.5.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make[2]: *** [api] Error 1 
make[1]: *** [greensql-fw] Error 2 
cp: greensql-fw: No such file or directory 
make: *** [greensql-fw] Error 1 

回答

0

被編輯:回答有點太快......所以刪除了原來的答案。

-dylib_install_name代替-so_name(並且具有dylib作爲擴展而不是.so)來嘗試。

+0

感謝您的建議。不幸的是,我的build目錄的任何子目錄中都沒有'libgsql-mysql.so.1'。我假設,因爲它在'-soname'選項後立即發生,那就是他們試圖命名該庫(和'gsql'可能指的是'greensql')。 另外,在源代碼中的任何Makefiles中,我都看不到任何對'ld'的調用。也許我錯過了一個? – morgant 2010-03-09 20:23:37

+0

嗯,你可能對lib名稱是正確的。你可以嘗試用'-soname'替換下面的標誌'-dylib_install_name'(可能在LD_FLAGS中的某處)?不要忘了'乾淨'' – ChristopheD 2010-03-09 20:34:50

+0

嗯,我不知道在LD_FLAGS應該去哪裏。沒有LD_FLAGS設置(或者在四個make文件的任何一箇中有'ld'的引用:Makefile,src/Makefile,src/parser,Makefile或者src/lib/Makefile文件。 – morgant 2010-03-09 21:37:35