Как установить кастомную библиотеку c?

Я просто хотел добавить библиотеку c в Ubuntu, созданную Гарвардским университетом для курса CS50. Они предоставили инструкции по установке библиотеки, которые перечислены ниже.


Debian, Ubuntu

Сначала станьте пользователем root, например:

sudo su -

Затем установите библиотеку CS50 следующим образом:

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

Я сделал именно так, как указано. Но компилятор сообщил «Неопределенная ссылка на функцию» - функция была Get String. Итак, я искал решение и нашел его. Он сказал использовать переключатель -l.

Теперь, когда я компилирую, я использую что-то вроде:

gcc –o hello.c hello –lcs50

(я не помню точную команду.)

Однако я не могу использовать команду make, которая проще в использовании.

Я понимаю, что существует некоторая проблема с подключением библиотеки. Что является хорошим решением этой проблемы?

2
задан 27 June 2012 в 03:09

2 ответа

Вы должны добавить следующую команду, чтобы заставить GetInt работать:

$ gcc hello.c -I / usr / local / include -L / usr / local / lib -lcs50 -o hello

[ 112] переименуйте «hello.c # и« hello »в свой входной файл и желаемое имя вывода. Опция -I / usr / local / include указывает gcc также искать в / usr / local / include заголовочные файлы. Опция - L / usr / local / lib указывает gcc (на этапе компоновки) также искать библиотеки в / usr / local / lib, а опция -lcs50 указывает gcc, какие библиотеки вам нужны.

source: ubuntuforum. орг

0
ответ дан 27 June 2012 в 03:09

Я тоже принимаю CS50, и у меня та же проблема. Следуя инструкциям Cs50, я получаю эту ошибку при компиляции кода с использованием gc

/tmp/ccvUiSKS.o: In function `main':
Goodmario.c:(.text+0x21): undefined reference to `GetInt'
collect2: error: ld returned 1 exit status

Я точно следовал инструкциям. Я считаю, что вы должны просто продолжать использовать -lcs50, это не сложнее. например. Команда, которую я использую для компиляции программы

gcc Goodmario.c -o Goodmario -std=c99 -lcs50

Не очень сложно: D

0
ответ дан 27 June 2012 в 03:09

Другие вопросы по тегам:

Похожие вопросы: