powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / не линкуется проект
5 сообщений из 5, страница 1 из 1
не линкуется проект
    #40130407
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
на Debian 10.3 работает простенькая программа на g++, которая читает данные с контроллера и складывает в таблицу MariaDB.
потребовалось сделать еще один сервер-сборщик, скачала с сайта Debian свежую версию debian-11.2.0-amd64-netinst.iso
все установила как обычно. Но вот горе - программа не линкуется.
makefile

tm: main.o
gcc-10 -lstdc++ -lmysqlclient -L /usr/lib/mysql -o tcrv main.o

main.o: main.cpp
gcc-10 -lstdc++ -c main.cpp
clean:
rm -f *.o

Ошибка:
Код: powershell
1.
2.
3.
4.
5.
6.
root@hvo:~/prog/tcrv_ex# ./compile
gcc-10 -lstdc++ -lmysqlclient -L /usr/lib/mysql -o tcrv  main.o
/usr/bin/ld: main.o: in function `main':
main.cpp:(.text+0x42): undefined reference to `mysql_init'
collect2: error: ld returned 1 exit status
make: *** [makefile:5: tm] Error 1


понимаю, что не видит библиотеку, но я все установила.
root@hvo:~/prog/tcrv_ex# mysql_config --libs
-L/usr/lib/x86_64-linux-gnu/ -lmariadb

Подскажите пожалуйста уважаемые профессионалы, как исправить ошибку, в gcc-8 все работает
...
Рейтинг: 0 / 0
не линкуется проект
    #40130435
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-I/usr/include/mysql?
OR see output
mysql_config --cflags --libs
--------------


gcc main.c -o main 'mysql_config --cflags --libs'
...
Рейтинг: 0 / 0
не линкуется проект
    #40130454
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
был без рус локали
в коде

#include <mariadb/mysql.h>

mysql_config - этот пакет ничего не устанавливает а помогает с путями для сборки-компиляции
можно посмотреть что он "подсказывает":
в console набираем mysql_config и видим все опции, которые он добавляет, выбираем нужные нам --cflags и --libs
Код: plaintext
1.
2.
3.
~/work/mysql$ mysql_config --cflags --libs
-I/usr/include/mariadb -I/usr/include/mariadb/mysql
-L/usr/lib/x86_64-linux-gnu/ -lmariadb


т.е из
gcc main.cpp -o main `mysql_config --cflags --libs`
получаем
gcc main.cpp -o main -I/usr/include/mariadb -I/usr/include/mariadb/mysql -L/usr/lib/x86_64-linux-gnu/ -lmariadb



и да - я использую g++ 9
...
Рейтинг: 0 / 0
не линкуется проект
    #40130510
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за ответы. В Debian 11 оказывается вот так надо.

Код: sql
1.
gcc-10 -lstdc++ -o tcrv main.o -L /usr/lib/mysql -lmysqlclient




А раньше было так

Код: sql
1.
gcc-10 -lstdc++ -lmysqlclient -L /usr/lib/mysql -o tcrv main.o



Зачем такие перестановки, непонятно
...
Рейтинг: 0 / 0
не линкуется проект
    #40130576
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.P
Зачем такие перестановки, непонятно

Затем, что от начала времён -L влияет только на те -l, что идут после него. Раньше Вам везло и mysqlclient находился где-то ещё в стандартном списке поиска библиотек.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / не линкуется проект
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]