我試圖建立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
,這次加入-lz
到CXXFLAGS
末得到過去的壓縮誤差。現在的錯誤如下:
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
感謝您的建議。不幸的是,我的build目錄的任何子目錄中都沒有'libgsql-mysql.so.1'。我假設,因爲它在'-soname'選項後立即發生,那就是他們試圖命名該庫(和'gsql'可能指的是'greensql')。 另外,在源代碼中的任何Makefiles中,我都看不到任何對'ld'的調用。也許我錯過了一個? – morgant 2010-03-09 20:23:37
嗯,你可能對lib名稱是正確的。你可以嘗試用'-soname'替換下面的標誌'-dylib_install_name'(可能在LD_FLAGS中的某處)?不要忘了'乾淨'' – ChristopheD 2010-03-09 20:34:50
嗯,我不知道在LD_FLAGS應該去哪裏。沒有LD_FLAGS設置(或者在四個make文件的任何一箇中有'ld'的引用:Makefile,src/Makefile,src/parser,Makefile或者src/lib/Makefile文件。 – morgant 2010-03-09 21:37:35