web-dev-qa-db-fra.com

Comment installer une bibliothèque personnalisée?

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?

2
arijit

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

2
user104102

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

2
bagustris