在Mac OS X 10.5.8 Leopard Server上构建GreenSQL 1.2.2的错误

时间:2010-03-09 19:52:17

标签: macos compiler-errors

我正在尝试在Mac OS X 10.5.8 Leopard Server上构建GreenSQL 1.2.2,但是我收到以下错误(似乎是ld错误?):

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-stable,以及MySQL客户端二进制文件&标题(每http://support.apple.com/kb/TA25017,虽然我在Mac OS X 10.5.8上安装了MySQL-45.binaries.tar.gz)。

我非常熟悉在Mac OS X上构建开源软件,但我不得不承认,我不知道有很多命令行编译的来龙去脉。我之前没有遇到ld错误(并且Makefile中没有看到任何跳出来的东西)。我在-soname的手册页中找不到ld选项的提及。

任何建议都将不胜感激。

更新#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

1 个答案:

答案 0 :(得分:0)

编辑:回答得太快了......所以删除了原来的答案。

尝试使用-dylib_install_name代替-so_name(并dylib作为扩展名而不是.so)。