Je tente de construire GreenSQL 1.2.2 sur Mac OS X 10.5.8 Leopard Server, mais je reçois les erreurs suivantes (qui semblent être un erreur ld
):Erreurs de construction GreenSQL 1.2.2 sur Mac OS X 10.5.8 Leopard Server
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
Je l'ai déjà construit et installé (en /usr/local
) les conditions suivantes: PCRE 8.01, libevent 1.4.13 stable, ainsi que les binaires des clients MySQL & têtes (par http://support.apple.com/kb/TA25017, bien que J'ai installé MySQL-45.binaries.tar.gz comme sur Mac OS X 10.5.8). Je suis assez familier avec la construction de logiciels open source sur Mac OS X, mais je dois admettre qu'il y a certainement beaucoup de tenants et aboutissants de la compilation en ligne de commande, je ne sais pas. Je n'ai pas rencontré d'erreurs ld
avant (et je n'ai rien vu dans le Makefile
qui m'a sauté dessus). Je n'ai pas trouvé de mention d'une option -soname
dans la page de manuel pour ld
.
Toutes les suggestions seraient grandement appréciées.
Mise à jour # 1: J'ai trouvé l'apparition de -soname
dans src/lib/Makefile
, il remplacé par -install_name
et a obtenu un peu plus loin. Maintenant, je reçois le texte suivant:
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
Mise à jour # 2: modifications supplémentaires à src/lib/Makefile
, en ajoutant cette fois -lz
à la fin de CXXFLAGS
obtient passé les erreurs de compression. Les erreurs sont maintenant les suivantes:
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
Merci pour les suggestions. Malheureusement, il n'y a pas de 'libgsql-mysql.so.1' dans les sous-répertoires de mon répertoire de construction. Je supposais que puisque cela se produisait immédiatement après l'option '-soname', c'est ce qu'ils essayaient de nommer la bibliothèque (et 'gsql' se référant probablement à 'greensql'). En outre, je ne vois aucun appel à 'ld' dans l'un des Makefiles de la source. Peut-être que j'ai manqué un? – morgant
Hmm, vous avez probablement raison sur le nom de la librairie. Pourriez-vous essayer de remplacer '-soname' l'indicateur suivant' -dylib_install_name' (quelque part dans LD_FLAGS probablement)? Ne pas oublier de «faire propre» – ChristopheD
Hmm, je ne sais pas où dans LD_FLAGS qui devrait aller. Il n'y a pas d'ensemble LD_FLAGS (ou d'autres références à 'ld' dans l'un des quatre fichiers make: 'Makefile',' src/Makefile', 'src/parser/Makefile', ou' src/lib/Makefile'.) – morgant