Я can' t собирают этот код сети мангусты server' s типовой пример

Короткое Введение:-(версия 4.6.3 GCC, OS-Ubuntu 12.04, работающий вокруг программы веб-сервера мангусты поэтому, когда я бегу, "делает" команду, чтобы собрать и установить мангусту, это сделало прекрасную задачу).

[Part 1 of question] This question is in reference to this post on stackowerflow.

веб-сервер мангусты helloworld программа

Вэленок ответил на этой почте, дав связь с привет примером программы.

в основном я пытаюсь собрать образец привет код программы, данный на этой связи:-

http://code.google.com/p/mongoose/source/browse/examples/hello.c

и вставленный в этот код уже собрал справочник мангусты. (у справочника есть mongoose.h файл),

Следующее - продукция командной строки для моей компиляции привет программы.

[email protected]:~$ gcc mongoose/hello.c -o mongoose/hello
/tmp/ccroC5Z6.o: In function `callback':
hello.c:(.text+0x32): undefined reference to `mg_get_request_info'
hello.c:(.text+0x96): undefined reference to `mg_printf'
/tmp/ccroC5Z6.o: In function `main':
hello.c:(.text+0xee): undefined reference to `mg_start'
hello.c:(.text+0x103): undefined reference to `mg_stop'
collect2: ld returned 1 exit status
[email protected]:~$ 

[Часть 2 вопроса]

Теперь, я нахожу внедрения mg_stop, mg_start, mg_printf и mg_get_request_info в mongoose.c файле, таким образом, я собираю mongoose.c файл с-c выбором как: gcc-c-o mongoose.o mongoose.c

Я думаю, что мой вопрос подобен:-

неопределенная ссылка на функцию, объявленную в *.h файле

но тогда когда я связываю libmongoose.so с-L выбором на gcc, я получаю следующие ошибки:- (libmongoose.so присутствует в том же самом справочнике, моем cwd),

[email protected]:~/mongoose$ gcc -L libmongoose.so -o hello hello.o mongoose.o
mongoose.o: In function `mg_start_thread':
mongoose.c:(.text+0x1369): undefined reference to `pthread_create'
mongoose.o: In function `load_dll':
mongoose.c:(.text+0xa955): undefined reference to `dlopen'
mongoose.c:(.text+0xa9b4): undefined reference to `dlsym'
collect2: ld returned 1 exit status

также, я продолжаю добираться выше ^^ ошибок, когда я собираю, не используя libmongoose.so

[EDIT] : added -pthread option on gcc, still shows errors :- mongoose.o: In function load_dll': mongoose.c:(.text+0xa955): undefined reference todlopen' mongoose.c:(.text+0xa9b4): undefined reference to `dlsym' collect2: ld returned 1 exit status

Для части 1 и части 2 моего вопроса: Я хочу избавиться от этих ошибок и успешно управлять hello.c образцом программы успешно. Заранее спасибо.

0
nl ja de

1 ответы

-L выбор не используется для соединения против библиотеки, это используется для определения пути поиска для динамических библиотек. Чтобы связаться против определенной библиотеки, используйте -l . Однако вы не должны связываться против обоих из mongoose.o и libmongoose.so , любой достаточен.

На Linux также необходимо связаться против pthread и динамической библиотеки погрузки также, потому что несмотря на то, чтобы быть частью стандартной библиотеки C, они не присутствуют в libc.so . Еще одна вещь обратить внимание на состоит в том, что последние версии binutils (определенно, ld ) требуют, чтобы библиотеки и объектные файлы были определены в заказе, символы зависят друг от друга, т.е. библиотеки должны пойти до конца командной строки.

В целом, используйте одну из следующих команд:

gcc -o hello hello.o mongoose.o -ldl -lpthread

или

gcc -L. -o hello hello.o -lmongoose -ldl -lpthread
5
добавлено
Спасибо @H2CO3 очень! Первая команда, которую вы упомянули, хорошо работает. но для второй команды после ошибки произошел, когда я управляю им./привет: - "ошибка, в то время как погрузка разделила библиотеки: libmongoose.so: не может открыть файл общего объекта: Никакой такой файл или каталог""
добавлено автор Akshay Patil, источник
хорошо! Еще раз спасибо
добавлено автор Akshay Patil, источник
@AkshayPatil Да, that' s, как это работает. Пожалуйста, читайте немного на динамической погрузке.
добавлено автор user529758, источник
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MongoDB Russian
MongoDB Russian
1 086 участник(ов)

> db.stats() https://combot.org/chat/-1001035023078

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru