FPC и MySQL на MacOS X Tiger

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

FPC и MySQL на MacOS X Tiger

Сообщение Tiger » 23.05.2006 20:18:43

Пытаюсь скомпилировать testdb4.pp на компе с MacOS X.
Компиляция происходит нормально, но вот линковка - нет.
Пробовал это же делать на Linux и Windows - без проблем все получалось.

Кто-нибудь сталкивался с такой проблемой? И как удалось решить?
Может я какие-нибудь ключи для компилятора не указал?

Код: Выделить всё
Dodge:/usr/local/share/examples/fpc-2.0.2/mysql 1$ fpc -Fl/usr/lib/mysql testdb4.pp
Free Pascal Compiler version 2.0.2 [2005/11/15] for powerpc
Copyright (c) 1993-2005 by Florian Klaempfl
Target OS: Darwin for PowerPC
Compiling testdb4.pp
testdb4.pp(11,3) Note: Local variable "count" not used
testdb4.pp(11,9) Note: Local variable "num" not used
testdb4.pp(12,3) Note: Local variable "code" not used
testdb4.pp(15,3) Note: Local variable "qbuf" not used
Assembling qtest
Linking testdb4
/usr/bin/ld: Undefined symbols:
_mysql_close
_mysql_error
_mysql_fetch_row
_mysql_free_result
_mysql_get_client_info
_mysql_get_host_info
_mysql_init
_mysql_num_fields
_mysql_num_rows
_mysql_port
_mysql_query
_mysql_real_connect
_mysql_select_db
_mysql_stat
_mysql_store_result
_mysql_unix_port
_mysql_refresh
testdb4.pp(85,1) Error: Error while linking
Error: /usr/local/bin/ppcppc returned an error exitcode (normal if you did not specify a source file to be compiled)


Содержимое каталога /usr/lib/mysql:
Код: Выделить всё
Dodge:/usr/local/share/examples/fpc-2.0.2/mysql 1$ ls -l /usr/lib/mysql/
total 9624
-rw-r--r--   1 root  wheel    20384 Aug 22  2005 libdbug.a
-rw-r--r--   1 root  wheel    53576 Aug 22  2005 libheap.a
-rw-r--r--   1 root  wheel    17064 Aug 22  2005 libmerge.a
-rw-r--r--   1 root  wheel   404656 Aug 22  2005 libmyisam.a
-rw-r--r--   1 root  wheel    31672 Aug 22  2005 libmyisammrg.a
-rw-r--r--   1 root  wheel  1404792 Aug 22  2005 libmysqlclient.a
-rwxr-xr-x   1 root  wheel      768 Aug 22  2005 libmysqlclient.la
-rw-r--r--   1 root  wheel  1419032 Aug 22  2005 libmysqlclient_r.a
-rwxr-xr-x   1 root  wheel      774 Aug 22  2005 libmysqlclient_r.la
-rw-r--r--   1 root  wheel  1077544 Aug 22  2005 libmystrings.a
-rw-r--r--   1 root  wheel   330296 Aug 22  2005 libmysys.a
-rw-r--r--   1 root  wheel   131232 Aug 22  2005 libnisam.a
-rw-r--r--   1 root  wheel     6512 Aug 22  2005 libvio.a


Информация о MySQL сервере:
Код: Выделить всё
mysql> status
--------------
mysql  Ver 14.7 Distrib 4.1.13a, for apple-darwin8.0 (powerpc) using  EditLine wrapper

Connection id:          2
Current database:       test
Current user:           1@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         4.1.13a
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /var/mysql/mysql.sock
Uptime:                 5 hours 21 min 4 sec

Threads: 1  Questions: 11  Slow queries: 0  Opens: 12  Flush tables: 1  Open tables: 1  Queries per second avg: 0.001
--------------
Tiger
новенький
 
Сообщения: 10
Зарегистрирован: 23.05.2006 19:38:26
Откуда: Москва

Сообщение Tiger » 09.06.2006 16:29:10

Как тут кто-то писал - получилось из серии "Помоги себе сам" :-)

Проблема решилась линковкой "в ручную". Может кому пригодится.

Код: Выделить всё
$ fpc -s testdb4.pp


Затем подправил файл link.res в текстовом редакторе, добавив строчки:

Код: Выделить всё
-L/usr/lib/mysql/
-lmysqlclient
-lcc_kext
-lz


после этого можно запустить тот самый шелл-скрипт ppas.sh, который обработает файл ассемблера и слинкует все что надо.
В итоге получилось приложение testdb4, правда, по умолчанию указанные в нем имя пользователя и пароль, ясное дело, не подходят, о чем программа радостно сообщает при запуске.
Tiger
новенький
 
Сообщения: 10
Зарегистрирован: 23.05.2006 19:38:26
Откуда: Москва

Сообщение Tiger » 09.06.2006 16:50:38

:oops: Подозреваю, что можно как-то подправить файл fpc.cfg чтобы вручную не подписывать эти строчки. Но вот как?
Tiger
новенький
 
Сообщения: 10
Зарегистрирован: 23.05.2006 19:38:26
Откуда: Москва

Сообщение Sergei I. Gorelkin » 10.06.2006 15:23:42

По идее, все, что передается линкеру, можно передать fpc, снабдив префиксом -k.
Т.е. что-то вроде -k-L/usr/lib/mysql/
Должно работать как в командной строке, так и в fpc.cfg.
Хотя конкретно насчет -L/usr/lib/mysql непонятно. Вроде бы она была указана в первоначальном примере в форме -Fl/usr/lib/mysql... Без нее будет линковаться? А без двух последних? ;) Если да, то скорее всего, в исходниках не то имя библиотеки указали. Там в директивах условной компиляции черт голову сломит, плюс непонятно с какими условиями все это компилится под MacOs...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1397
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 84

Рейтинг@Mail.ru