2010-03-09 8 views
2

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 

Répondre

0

Édité: réponse un peu trop vite ... réponse originale ainsi enlevée.

Essayez avec -dylib_install_name au lieu de -so_name (et avez dylib comme extension au lieu de .so).

+0

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

+0

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

+0

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

Questions connexes