Автор Тема: Free Pascal - не линкуется программа  (Прочитано 6441 раз)

Оффлайн pi1985

  • Участник
  • *
  • Сообщений: 140
В консольной IDE ввожу программу:
uses
  mysql51;
begin
writeln('Hello, world!!!!!');
end.
Сохраняю,  жму F9. Получаю собщение: Error while linking.
Что делаю неправильно?
Ноут HP550, LXDE Starterkit P9 x86-64
Настольный, Alt Образование 10.2 x86-64

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Free Pascal - не линкуется программа
« Ответ #1 : 27.05.2012 11:11:13 »
uses
  mysql51;
Это что ?
Это полный код или только часть ?
Сноси Винду, переходи на Линукс ! :)

Оффлайн pi1985

  • Участник
  • *
  • Сообщений: 140
Re: Free Pascal - не линкуется программа
« Ответ #2 : 27.05.2012 11:21:38 »
Это полный код или только часть ?
mysql51 - модуль для работы с mysql. Находится здесь: /usr/lib64/fpc/units/x86_64-linux/mysql.
Т. е. это не мой код.
Ноут HP550, LXDE Starterkit P9 x86-64
Настольный, Alt Образование 10.2 x86-64

Оффлайн Kemper

  • Участник
  • *
  • Сообщений: 572
  • Simply Linux
Re: Free Pascal - не линкуется программа
« Ответ #3 : 27.05.2012 11:38:01 »
В консольной IDE ввожу программу:
uses
  mysql51;
begin
writeln('Hello, world!!!!!');
end.
Сохраняю,  жму F9. Получаю собщение: Error while linking.
Что делаю неправильно?

Впервую очередь внимательно читайте, что за ошибки выдает IDE. Во вторую очередь возьмите книжку по Pascal и почитайте её.
Как должно быть правильно(Я не беру в расчет ваш модуль mysql51, почитайте на него документацию)
program primer; //Можно писать и без него.
uses crt; //crt - базовые классы и функции, он должен быть обязательно
begin
          writeln('Hellow, world!');
end.

Честно говоря вошел в ступор, когда начал писать. Сейчас восновном разрабатываю на Pascal-e в виде unit-ов, а чистый набор program и т.д. просто забыл.
« Последнее редактирование: 27.05.2012 12:43:17 от Kemper »
Alt Linux - Поддержим Российского производителя!

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: Free Pascal - не линкуется программа
« Ответ #4 : 27.05.2012 12:57:45 »
какой нафиг crt обязательно? Это для работы с терминалом и часто не нужно вообще.

Оффлайн Kemper

  • Участник
  • *
  • Сообщений: 572
  • Simply Linux
Re: Free Pascal - не линкуется программа
« Ответ #5 : 27.05.2012 13:03:08 »
какой нафиг crt обязательно? Это для работы с терминалом и часто не нужно вообще.
Для работы с write или writeln обязательно.
Alt Linux - Поддержим Российского производителя!

Оффлайн pi1985

  • Участник
  • *
  • Сообщений: 140
Re: Free Pascal - не линкуется программа
« Ответ #6 : 27.05.2012 13:18:48 »
В любом случае, следующая программа компилируется и выполняется нормально:
begin
writeln('Hello, world!!!!!');
end.
Мне нужно написать прогу для работы с mysql. Подключаю модуль - и такой облом.
Ноут HP550, LXDE Starterkit P9 x86-64
Настольный, Alt Образование 10.2 x86-64

Оффлайн Kemper

  • Участник
  • *
  • Сообщений: 572
  • Simply Linux
Re: Free Pascal - не линкуется программа
« Ответ #7 : 27.05.2012 13:34:27 »
Мне нужно написать прогу для работы с mysql. Подключаю модуль - и такой облом.
Посмотрите тут, может что полезное увидите:
http://softwaretopic.informer.com/free-pascal-mysql-example/
http://www.win-ni.narod.ru/FPC/testdb4.htm
Alt Linux - Поддержим Российского производителя!

Оффлайн pi1985

  • Участник
  • *
  • Сообщений: 140
Re: Free Pascal - не линкуется программа
« Ответ #8 : 27.05.2012 14:51:19 »
Посмотрите тут, может что полезное увидите:
http://softwaretopic.informer.com/free-pascal-mysql-example/
http://www.win-ni.narod.ru/FPC/testdb4.htm
Благодарю за ссылки. Буду изучать.

Выполнил компиляцию в командной строке. Вот что получил:
[vanya@VanyaBook mysql_db]$ fpc mysql1.pas
Free Pascal Compiler version 2.6.0 [2012/05/22] for x86_64
Copyright (c) 1993-2011 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling mysql1.pas
Linking mysql1
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
/usr/bin/ld: cannot find -lmysqlclient
mysql1.pas(4,1) Error: Error while linking
mysql1.pas(4,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
[vanya@VanyaBook mysql_db]$
Занитересовала строка
/usr/bin/ld: cannot find -lmysqlclientПоискал в репозитории - нашёл пакет libmysqlclient-devel. Его установка проблему решила.
Всем большое спасибо.
Ноут HP550, LXDE Starterkit P9 x86-64
Настольный, Alt Образование 10.2 x86-64

Оффлайн palex

  • Участник
  • *
  • Сообщений: 124
Re: Free Pascal - не линкуется программа
« Ответ #9 : 27.05.2012 17:54:00 »
Цитировать
Поискал в репозитории - нашёл пакет libmysqlclient-devel. Его установка проблему решила.
Всем большое спасибо
об аналогичной проблеме(с другими модулями) я писал и на форуме и в багзиллу. Чтобы добавили в зависимости для FPC devel библиотеки.
Пока тишина. А на эти грабли будут еще многие наступать.
PS 2Kemper - Таки, для write или writeln модуль crt не нужен. Как старый пасквилянт заявляю. :-)

Онлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 159
    • Домашняя страница
Re: Free Pascal - не линкуется программа
« Ответ #10 : 27.05.2012 18:57:56 »
об аналогичной проблеме(с другими модулями) я писал и на форуме и в багзиллу. Чтобы добавили в зависимости для FPC devel библиотеки.
Чтобы не тянуть полрепозитория, нужно делить этот пакет на более мелкие, по модулям, каждый их которых тянет нудные зависимости. Иначе ради 1-2% пользователей FPC все будут вытягивать MySQL, хотя им для обучения БД и не нужна.
Андрей Черепанов (cas@)

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: Free Pascal - не линкуется программа
« Ответ #11 : 27.05.2012 19:37:37 »
какой нафиг crt обязательно? Это для работы с терминалом и часто не нужно вообще.
Для работы с write или writeln обязательно.
не нужен.

его обычно юзали для "repeat until keypressed;" (последнее как раз оттуда)

Оффлайн palex

  • Участник
  • *
  • Сообщений: 124
Re: Free Pascal - не линкуется программа
« Ответ #12 : 28.05.2012 11:22:38 »
об аналогичной проблеме(с другими модулями) я писал и на форуме и в багзиллу. Чтобы добавили в зависимости для FPC devel библиотеки.
Чтобы не тянуть полрепозитория, нужно делить этот пакет на более мелкие, по модулям, каждый их которых тянет нудные зависимости. Иначе ради 1-2% пользователей FPC все будут вытягивать MySQL, хотя им для обучения БД и не нужна.
Я не о 1-2% пользователей, которые прежде чем писать для БД должны выяснить что-с чем работает.
Как раз имел ввиду школьников и студентов. (Недавно сын с аналогичной ошибкой столкнулся и удивлялся - " почему в BP работает?". Доставили - заработало.)
ЕМНИП, большинство народа после "Hello word!" обычно пытается что-нить нарисовать:-) А без пары нужных библиотек тот же "uses graph" будет послан и не слинкован...
Хотя бы libX11-devel и xorg-xf86dgaproto-devel (кажется, их докинуть пришлось) для "рисования" воткнуть в зависимости.
А по большому счету, да- если пишешь что-то сложнее "Hello ...", то разберись "откуда ноги растут".

Онлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 159
    • Домашняя страница
Re: Free Pascal - не линкуется программа
« Ответ #13 : 28.05.2012 11:30:40 »
А по большому счету, да- если пишешь что-то сложнее "Hello ...", то разберись "откуда ноги растут".
Я предложил более элегантное решение: разбить всё на подпакеты. которые вытягивают то, что нужно.
Андрей Черепанов (cas@)