Ошибки сборки GreenSQL 1.2.2 на Mac OS X 10.5.8 Leopard Server - PullRequest
2 голосов
/ 09 марта 2010

Я пытаюсь собрать GreenSQL 1.2.2 на Mac OS X 10.5.8 Leopard Server, но я получаю следующие ошибки (которые кажутся ошибкой 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,, хотя я установил MySQL -45.binaries.tar.gz в Mac OS X 10.5.8).

Я довольно хорошо знаком с созданием программного обеспечения с открытым исходным кодом в 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 голосов
/ 09 марта 2010

Отредактировано: ответил слишком быстро ... поэтому удалил оригинальный ответ.

Попробуйте использовать -dylib_install_name вместо -so_name (и иметь dylib в качестве расширения вместо .so).

...