Как установить кастомную библиотеку 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, которая проще в использовании.

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

1
задан 27 June 2012 в 04:09

14 ответов

Я тоже беру 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

2
ответ дан 25 July 2018 в 19:43

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

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

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

source : ubuntuforum.org

2
ответ дан 25 July 2018 в 19:43

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

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

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

source : ubuntuforum.org

2
ответ дан 2 August 2018 в 01:43

Я тоже беру 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

2
ответ дан 2 August 2018 в 01:43

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

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

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

source : ubuntuforum.org

2
ответ дан 4 August 2018 в 17:22

Я тоже беру 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

2
ответ дан 4 August 2018 в 17:22

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

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

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

source : ubuntuforum.org

2
ответ дан 6 August 2018 в 01:57

Я тоже беру 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

2
ответ дан 6 August 2018 в 01:57

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

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

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

source : ubuntuforum.org

2
ответ дан 7 August 2018 в 19:29

Я тоже беру 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

2
ответ дан 7 August 2018 в 19:29

Я тоже беру 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

2
ответ дан 10 August 2018 в 07:55

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

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

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

source : ubuntuforum.org

2
ответ дан 10 August 2018 в 07:55

Я тоже беру 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

2
ответ дан 15 August 2018 в 19:59

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

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

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

source : ubuntuforum.org

2
ответ дан 15 August 2018 в 19:59

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

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