как добавить библиотеку в команду make в c - PullRequest
0 голосов
/ 06 марта 2011

Это заголовочный файл и его C-файл: cs50.h и cs50.c

Теперь я использую их в следующих пример http://www.paste.ubuntu.com/576370/ - который больше недоступен.

Я уже поместил файл заголовка в /usr/bin/include или что-то в этом роде, и когда я пытаюсь скомпилировать свой код, используя gcc -o xxx xxx.c, он неЭто не сработало, поэтому попытался это исправить, и работал следующим образом: http://www.paste.ubuntu.com/576371/ - который больше не доступен.

Теперь я хочу сделать что-то, чтобы команда 'make' работала какgcc делает.

Что мне нужно сделать?


Следующая тема была старой:

Я использовал команду gccдля компиляции программ на Си, но через некоторое время у меня возникла проблема.Мне нужно скомпилировать новый заголовочный файл и использовать его в качестве библиотеки.

Заголовочный файл с именем cs50.h.

, поэтому после этого, и все в порядке, я могу скомпилировать с помощью следующего

gcc -o xxx xxx.c -lcs50

Это работает, но теперь я хочу использовать команду 'make' и не могу заставить ее работать.

Он просто не компилирует файл заголовка и библиотеку, как раньше был gccЯ редактирую его, чтобы принять библиотеку cs50.

Итак, теперь я хочу добавить в команду 'make' следующее: -lcs50

Может кто-нибудь помочь мне в этом, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 06 марта 2011

В верхней части вашего Makefile добавьте строку:

LDLIBS = -lcs50

Если вы используете стандартные (неявные) правила Make для сборки, то это все, что вам нужно сделать. Если вы используете явные правила, вам нужно добавить $ (LDLIBS) к вашим явным правилам.

Если Makefile отсутствует, тогда make использует правила по умолчанию, и вы можете просто создать make-файл с

echo LDLIBS = -lcs50 > Makefile

или укажите make для связи с определенными библиотеками, указав в среде необходимые библиотеки в LDLIBS. Например, если вы используете оболочку, производную от sh (что-либо, кроме csh или tcsh), вы можете сделать:

LDLIBS=-lcs50 make target

Если вы используете вариант csh, вы можете сделать:

env LDLIBS=-lcs50 make target

или просто сделайте (опять же, для оболочек не-csh)

export LDLIBS=-lcs50

перед запуском make. (Для вариантов csh выполните setenv LDLIBS -lcs50)

0 голосов
/ 29 марта 2019

Вы можете использовать приведенную ниже ссылку «сделать» команду для lib и включить,

make <filename_without_extension> LDLIBS="-l<lib1> -l<lib2>"

предположим, у вас есть файл server1.cpp для компиляции с использованием команды make,

make server1 LDLIBS="-lcpprest -lpthread -lssl -lcrypto" LDFLAGS="-L/usr/lib/" CXXFLAGS="-I/usr/include/"

Вывод развернет команду компиляции как,

g++ -I/usr/include/  -L/usr/lib/  server1.cpp  -lcpprest -lpthread -lssl -lcrypto -o server1
0 голосов
/ 06 марта 2011

Вы забыли, что нужно указать gcc, в каком каталоге находится библиотека CS50?

gcc … -L/directory/for/cs50_library -lcs50
...