Hozzászólások
Sziasztok!
Frissen feltelepítettem a Red hat 9-et, és elindítottam rajta a mysqld-t. A feladatom az, hogy c-ből elérjem a mysql szerver adatbázisait, tábláit, lekérdezések eredményét változóba tároljam, szóval teljesen általános dolgok.
A mysql-hez símán hozzáférek a ./mysql-en keresztül, viszont C-ből nem tudom elérni! Figyeltem a fórumot, és találtam pár ilyen jellegű témát... ki is próbáltam amit írtak (gy, airween). Sajnos még a mysql_init(&conn); is hibát jelez! De inkáb leírom a próba forráskódom:
#include <mysql!mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
MYSQL conn;
mysql_init(&conn);
return 0;
}
Visszatérő hibaüzenetem fordításnál:
/tmp/ccw19iYR.o(.text+0x1e): In function 'main':
:undefined reference to 'mysql_init'
collect2: ld returned 1 exit status
Ja! és ezt az egészet root-ként próbálgatom.
Ha valaki tudja, hogy ezt miért írja ki, akkor légyszi közölje! Nagyon megköszönném!
S81
- A hozzászóláshoz be kell jelentkezni
Szerintem a forditaskor lemaradt a -lmysql kapcsolo. Illetve az elso include rossz, ! hleyett / kene.
- A hozzászóláshoz be kell jelentkezni
Köszike!
A kapcsolót tényleg nem írtam be (nem tudtam róla), a !-jel pedig elírás. Köszi mind a kettőért! Kipróbálom, és jelentkezek!
Üdv
S81
- A hozzászóláshoz be kell jelentkezni
Még annyit: hogyan kell megadni a -lmysql kapcsolót?
gcc -o -lmysql m mprob1.c
??
Bocsi, de nagyon kezdő vagyok linuxon (-1 manus Microsoftéknál) :-)
- A hozzászóláshoz be kell jelentkezni
gcc -o valami valami.c -lmysql -W -Wall
Ezt tudom ajanlani, amugy man gcc meg man ld. Ott le van irva melyikkapcsolo mire valo. Talan meg a HUpWikiben is van programozasrol szo.
- A hozzászóláshoz be kell jelentkezni
Ezt írtam be:
gcc -o m mprob1.c -lmysql -W -Wall
Hibaüzenet:
/usr/bin/ld: cannot find -lmysql
collect2: ld returned 1 exit status
Valamit be kellene még állítani?
Most megnéztem a man gcc-t. Nem mondom szép ... Angol tudás nélkül úgy látom nagyon nehéz lesz... Nem tud valaki esetleg egy jó angol könyvet is? :wink:
Üdv: S81
- A hozzászóláshoz be kell jelentkezni
hello,
[quote:3087b567a9="stage81"]Ezt írtam be:
gcc -o m mprob1.c -lmysql -W -Wall
a -llib-et a sor vegere kell - mintha lenne vmi ilyesmi szabaly.
tehat:
[code:1:3087b567a9]
gcc -Wall mprob1.c -o m -lmysql
[/code:1:3087b567a9]
ill. nézd meg, hogy hol van a libmysqlclient.a file: /usr/lib/ alatt, vagy /usr/local/lib alatt. Ha ott nincs, akkor a gcc-nek meg kell adni a -L kapcsoloval a teljes eleresi utat - csak a könyvtárat.
a.
- A hozzászóláshoz be kell jelentkezni
Meg kell a -dev csomag is, ha nem tévedek. Valami ilyesmi néven futhat, hogy libmysqlclient-dev, vagy libmysqlclientXX-dev talán.
- A hozzászóláshoz be kell jelentkezni
Már szégyenlem, de így sem megy :cry:
a libmysqlclient.a-t a /usr/lib/mysql könyvtárban találtam meg. Így azt írtam be:
gcc -Wall mprob1.c -o m -lmysql -L /usr/lib/mysql
Hibaüzenet:
/usr/bin/ld: cannot find -lmysql
collect2: ld returned 1 exit status
Ui.: Köszi, hogy segítesz
- A hozzászóláshoz be kell jelentkezni
Siromega:
Csak .a és .so kiterjesztésű libmysqlclient-et találtam. Devet sajnos nem (Így adtam meg keresési feltételnek: libmysqlclient*)
- A hozzászóláshoz be kell jelentkezni
[quote:2d3360960d="stage81"]
gcc -Wall mprob1.c -o m -lmysql -L /usr/lib/mysql
Hello!
Ez esetben arra tippelnek, hogy a -L utan kozvetlenul
(szokoz nelkul add meg a konyvtarat, ill. ugyanez vonatkozik
a -I -re is - hogy egy kicsit preventiv legyek ;-))
csg
- A hozzászóláshoz be kell jelentkezni
Köszi csg a tippet!
Próbáltam, de nem jött össze... Egyébként megfigyeltem, hogy bárhogy írom a -l mysql-t hibaüzenetként egybe adja vissza így: -lmysql :wink: Hiába püfölöm azt a space-t
- A hozzászóláshoz be kell jelentkezni
Igen a -l nem mindegy hol all az a legvegere keruljon.
En irtam rosszul bocs.
gcc -W -Wall -o valami valami.c -lmysql
A -L utan nem kell space: -L/usr/lib
libmysql.so kell ha dinamukusan linkeled .a ha statikusan.
A -dev meg a csomagra vonatkozott ami tartalmazza ezeket a filekat, de ez disztribucio fuggo.
- A hozzászóláshoz be kell jelentkezni
En azt irtam, hogy hagyd ki a space-t - meg ha a zarojelezest
el is barmoltam. Meg1x osszefoglalva:
[code:1:079c897aca]
gcc -Wall mprob1.c -o m -L/usr/lib/mysql -lmysql
[/code:1:079c897aca]
- A hozzászóláshoz be kell jelentkezni
Nálam a libmysqlclient10-dev csomag van fenn. Van mondjuk egy proba.c, az elején egy [code:1:8e714a270a]#include<mysql/mysql.h>[/code:1:8e714a270a]
Ugyanitt van egy Makefile:
[code:1:8e714a270a]
LDFLAGS = -lmysqlclient
CFLAGS = -Wall
proba:
[/code:1:8e714a270a]
Ezután egy 'make' szépen elkészíti a 'proba' nevű binárist.
Ja, és a -dev csomag alatt azt értettem, hogy fel van telepítve a (pl) libmysqlclient10-dev csomag. Ennek a tartalma: http://packages.debian.org/cgi-bin/search_contents.pl?word=libmysqlclient10-dev&searchmode=filelist&case=insensitive&version=stable&arch=i386
Ez a woody csomagja, de nem hiszem, hogy mondjuk a redhat esetén nagyon mást kéne tartalmaznia.
- A hozzászóláshoz be kell jelentkezni
Azt hittem kiborítottalak a h**** kérdéseimmel, és elmenekültél :wink:
Köszi a helyesbítést! A linkelés a -L? Azt hova kell tennem? Azt is a végére?
most valahogy így néz ki az egész:
gcc -W -Wall -o m mprob1.c -lmysql -L/usr/lib/mysql
Hibaüzenetem változatlanul ez marad:
/usr/bin/ld: cannot find -lmysql
collect2: ld returned 1 exit status
- A hozzászóláshoz be kell jelentkezni
[quote:4a0d29c3d9="stage81"]
gcc -W -Wall -o m mprob1.c -lmysql -L/usr/lib/mysql
Hibaüzenetem változatlanul ez marad:
/usr/bin/ld: cannot find -lmysql
collect2: ld returned 1 exit status
Szerintem -lmysqlclient
- A hozzászóláshoz be kell jelentkezni
Siromega:
Kipróbáltam, amit írtál (-lmysqlclient) lefordította!! :D :D :D
Igaz, még nem csinál semmit a program, de ez már tök jó... mármint, hogy lefordult...
Köszönöm mindenkinek a segítséget! Rendesek vagytok! Még jelentkezni fogok (valószínűleg megint lesznek hülye kérdéseim ) :wink:
Addig is sziasztok!
Üdv S81
- A hozzászóláshoz be kell jelentkezni
[quote:97d3f0122a="siromega"]Szerintem -lmysqlclient
Ott a pont... Ezt en is jol elneztem :oops:
- A hozzászóláshoz be kell jelentkezni
[quote:e42300e214="stage81"]
Kipróbáltam, amit írtál (-lmysqlclient) lefordította!! :D :D :D
Igaz, még nem csinál semmit a program, de ez már tök jó... mármint, hogy lefordult...
Érdemes rászokni a make-re. Jóság 8)
- A hozzászóláshoz be kell jelentkezni
Mi az a make?
- A hozzászóláshoz be kell jelentkezni
Egy nagyon jó programfejlesztést segítő eszköz. Főleg akkor könnyíti meg a fordítást, ha bonyolultabb programról van szó, mint egy gcc -o foo foo.c. A ''Makefile''-ban van leírva a ,,recept'', hogy mit csináljon.
A man és az info oldalakon megtalálható minden.
- A hozzászóláshoz be kell jelentkezni
Mégegyszer köszönöm. Innen remélhetőleg menni fog minden.
Akkor ezt a man-t meg info-t nem felejtem el használni :wink:
Üdv:
S81
- A hozzászóláshoz be kell jelentkezni