Je voulais juste ajouter une bibliothèque c à Ubuntu qui a été créée par l'Université de Harvard pour le cours cs50. Ils ont fourni des instructions sur l'installation de la bibliothèque, répertoriée ci-dessous.
Debian, Ubuntu
D'abord devenir root, comme avec:
Sudo su -
Ensuite, installez la bibliothèque CS50 comme suit:
apt-get install gcc
wget http://mirror.cs50.net/library/c/cs50-library-c-3.1.Zip
unzip cs50-library-c-3.1.Zip
rm -f cs50-library-c-3.1.Zip
cd cs50-library-c-3.1
gcc -c -ggdb -std=c99 cs50.c -o cs50.o
ar rcs libcs50.a cs50.o
chmod 0644 cs50.h libcs50.a
mkdir -p /usr/local/include
chmod 0755 /usr/local/include
mv -f cs50.h /usr/local/include
mkdir -p /usr/local/lib
chmod 0755 /usr/local/lib
mv -f libcs50.a /usr/local/lib
cd ..
rm -rf cs50-library-c-3.1
J'ai fait exactement comme dirigé. Mais le compilateur a signalé “Référence indéfinie à une fonction” - la fonction était Get String. J'ai donc cherché une solution et en ai trouvé une. Il a dit d'utiliser le commutateur -l
.
Maintenant, quand je compile, j'utilise quelque chose comme:
gcc –o hello.c hello –lcs50
(Je ne me souviens pas de la commande exacte.)
Cependant, je ne peux pas utiliser la commande make
, qui est plus facile à utiliser.
Je comprends qu'il y a un problème avec la liaison de la bibliothèque. Quelle est la bonne solution à ce problème?
Je prends aussi CS50, et j'ai le même problème. Après avoir suivi les instructions de Cs50, j'obtiens cette erreur lors de la compilation de code avec gc
/tmp/ccvUiSKS.o: In function `main':
Goodmario.c:(.text+0x21): undefined reference to `GetInt'
collect2: error: ld returned 1 exit status
J'ai suivi les instructions à la lettre. Je crois que vous devriez simplement continuer à utiliser -lcs50, ce n'est pas plus difficile. par exemple. La commande que j'utilise pour compiler un programme
gcc Goodmario.c -o Goodmario -std=c99 -lcs50
Pas très dur: D
vous devez ajouter la commande suivante pour que GetInt fonctionne:
$ gcc hello.c -I/usr/local/include -L/usr/local/lib -lcs50 -o hello
renommez "hello.c # et" hello "avec votre fichier d'entrée et le nom de sortie souhaité. L'option -I/usr/local/include indique à gcc de rechercher également dans/usr/local/include les fichiers d'en-tête. L'option -L/usr/local/lib indique à gcc (dans la phase de liaison) de rechercher également les bibliothèques dans/usr/local/lib, et l'option -lcs50 indique à gcc les bibliothèques dont vous avez besoin.
source: ubuntuforum.org