программа компилится такими командамиg++ `paragui-config --cflags` -c my.cpp
g++ my.o -o my `paragui-config --libs`
при использвании gcc
gcc -x c++ `paragui-config --cflags` -c my.cpp
компилируется (в исходнике есть строка #include "libmpdlient.h" в папке с компилируемой программой лежат файлы libmpdclient.h и libmpdclient.c ) но при запуске команды
gcc my.o -o my `paragui-config --libs`
выдаёт ошибку чтоен видит функций которые реализованы в libmpdclient.c
вот файл paragui-config
Код:
#!/bin/shprefix=/usr
exec_prefix=${prefix}
exec_prefix_set=nousage="\
Usage: paragui-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]"if test $# -eq 0; then
echo "${usage}" 1>&2
exit 1
fiwhile test $# -gt 0; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esaccase $1 in
--prefix=*)
prefix=$optarg
if test $exec_prefix_set = no ; then
exec_prefix=$optarg
fi
;;
--prefix)
echo $prefix
;;
--exec-prefix=*)
exec_prefix=$optarg
exec_prefix_set=yes
;;
--exec-prefix)
echo $exec_prefix
;;
--version)
echo 1.0.4
;;
--cflags)
if test ${prefix}/include != /usr/include ; then
includes=-I${prefix}/include
fi
echo $includes -I${prefix}/include/paragui -I/usr/include/freetype2 -I/usr/include/SDL -D_REENTRANT
;;
--libs)
if [ "`uname`" = "SunOS" ]; then
libdirs="-L${exec_prefix}/lib -R${exec_prefix}/lib"
else
libdirs="-L${exec_prefix}/lib"
fi
echo $libdirs -lparagui -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lSDL_image -lpthread -lfreetype -lstdc++
;;
--static-libs)
if [ "`uname`" = "SunOS" ]; then
libdirs="-L${exec_prefix}/lib -R${exec_prefix}/lib"
else
libdirs="-L${exec_prefix}/lib"
fi
echo $libdirs -lparagui -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lpthread -lfreetype -lstdc++
;;
*)
echo "${usage}" 1>&2
exit 1
;;
esac
shift
done
>программа компилится такими командами
>
>g++ `paragui-config --cflags` -c my.cpp
>
>g++ my.o -o my `paragui-config --libs`
>
>при использвании gcc
>
>gcc -x c++ `paragui-config --cflags` -c my.cpp
>
>компилируется (в исходнике есть строка #include "libmpdlient.h" в папке с компилируемой программой
>лежат файлы libmpdclient.h и libmpdclient.c ) но при запуске команды
>
>gcc my.o -o my `paragui-config --libs`
>
>выдаёт ошибку чтоен видит функций которые реализованы в libmpdclient.cВы пытаетесь собрать my.o с библиотеками
> echo $libdirs -lparagui -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lSDL_image -lpthread -lfreetype -lstdc++
Про функции из libmpdclient.c линкеру ничего не известно. Попробуйте намекнуть ему, что libmpdclient.o тоже хочет поиграть:
gcc my.o libmpdclient.o -o my `paragui-config --libs`
(откуда брать libmpdclient.o, попробуйте догадаться самостоятельно)
>gcc my.o libmpdclient.o -o my `paragui-config --libs`
>
>(откуда брать libmpdclient.o, попробуйте догадаться самостоятельно)gcc -c libmpdclient.c
так ?
>>программа компилится такими командами
>>
>>g++ `paragui-config --cflags` -c my.cpp
>>
>>g++ my.o -o my `paragui-config --libs`
>>
>>при использвании gcc
>>
>>gcc -x c++ `paragui-config --cflags` -c my.cpp
>>
>>компилируется (в исходнике есть строка #include "libmpdlient.h" в папке с компилируемой программой
>>лежат файлы libmpdclient.h и libmpdclient.c ) но при запуске команды
>>
>>gcc my.o -o my `paragui-config --libs`
>>
>>выдаёт ошибку чтоен видит функций которые реализованы в libmpdclient.c
>
>Вы пытаетесь собрать my.o с библиотеками
>
>> echo $libdirs -lparagui -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lSDL_image -lpthread -lfreetype -lstdc++
>
>Про функции из libmpdclient.c линкеру ничего не известно. Попробуйте намекнуть ему, что
>libmpdclient.o тоже хочет поиграть:
>
>gcc my.o libmpdclient.o -o my `paragui-config --libs`
>
>(откуда брать libmpdclient.o, попробуйте догадаться самостоятельно)
Всё сработало .Спасибо огромное. Сделал gcc -c libmpdclient.c , получил файл с расширением .о и всё слинковалось ....НО !!!теперь встала проблема с mysql ...
пишу в проге #include <mysql.h> опять таже проблема .... компилится , но не линкуется ... пишет что не видит функции работы с mysql (mysql_connect и др) ... тот же вопрос ... что делать? Тут ведь я уже не смогу взять гдето файл mysql.o ...
>Всё сработало .Спасибо огромное. Сделал gcc -c libmpdclient.c , получил файл с
>расширением .о и всё слинковалось ....НО !!!
>
>теперь встала проблема с mysql ...
>пишу в проге #include <mysql.h> опять таже проблема .... компилится , но не линкуется ... пишет что не видит функции работы с mysql (mysql_connect и др) ... тот же вопрос ... что делать? Тут ведь я уже не смогу взять гдето файл mysql.o ...
В этом случае стоит подключить разделяемую библиотеку, libmysql.so, если не ошибаюсь.
На этапе линковки добавляем -lmysql и наслаждаемся :). Если же библиотека лежит в нестандартном месте, например /home/cesar/lib/libmysql.so, в чём я сильно сомневаюсь, то спасёт -L/home/cesar/lib
>>Всё сработало .Спасибо огромное. Сделал gcc -c libmpdclient.c , получил файл с
>>расширением .о и всё слинковалось ....НО !!!
>>
>>теперь встала проблема с mysql ...
>>пишу в проге #include <mysql.h> опять таже проблема .... компилится , но не линкуется ... пишет что не видит функции работы с mysql (mysql_connect и др) ... тот же вопрос ... что делать? Тут ведь я уже не смогу взять гдето файл mysql.o ...
>
>
>В этом случае стоит подключить разделяемую библиотеку, libmysql.so, если не ошибаюсь.
>На этапе линковки добавляем -lmysql и наслаждаемся :). Если же библиотека лежит
>в нестандартном месте, например /home/cesar/lib/libmysql.so, в чём я сильно сомневаюсь, то
>спасёт -L/home/cesar/libя пробывал добавлять -lmysql , модифицировав скрипт
.......
.......
--libs)
if [ "`uname`" = "SunOS" ]; then
libdirs="-L${exec_prefix}/lib -R${exec_prefix}/lib"
else
libdirs="-L${exec_prefix}/lib"
fi
echo $libdirs -lparagui -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lSDL_image -lpthread -lmysql -lfreetype -lstdc++
;;это не помогло , пищет что не найдена mysql .
Библиотека называется libmysqlclient.so и подключать её надо через -lmysqlclient
>>>Всё сработало .Спасибо огромное. Сделал gcc -c libmpdclient.c , получил файл с
>>>расширением .о и всё слинковалось ....НО !!!
>>>
>>>теперь встала проблема с mysql ...
>>>пишу в проге #include <mysql.h> опять таже проблема .... компилится , но не линкуется ... пишет что не видит функции работы с mysql (mysql_connect и др) ... тот же вопрос ... что делать? Тут ведь я уже не смогу взять гдето файл mysql.o ...
>>
>>
>>В этом случае стоит подключить разделяемую библиотеку, libmysql.so, если не ошибаюсь.
>>На этапе линковки добавляем -lmysql и наслаждаемся :). Если же библиотека лежит
>>в нестандартном месте, например /home/cesar/lib/libmysql.so, в чём я сильно сомневаюсь, то
>>спасёт -L/home/cesar/lib
>
>я пробывал добавлять -lmysql , модифицировав скрипт
>.......
>.......
>--libs)
> if [ "`uname`" = "SunOS" ];
>then
> libdirs="-L${exec_prefix}/lib -R${exec_prefix}/lib"
> else
> libdirs="-L${exec_prefix}/lib"
> fi
> echo $libdirs -lparagui -L/usr/lib -Wl,-rpath,/usr/lib -lSDL
>-lSDL_image -lpthread -lmysql -lfreetype -lstdc++
> ;;
>
>это не помогло , пищет что не найдена mysql .
сделал .
Добавил в строку опций:-L/usr/lib/mysql -lmysqlclient
спасибо всем