[問題] 想請教如何在Linux上寫C連資料庫

作者: NealPope (尼爾教皇)   2020-07-17 00:04:39
各位前輩抱歉~
以往都是用Windows的OS
windows下開發連資料庫都ok
最近接觸到Linux小有認知
目前公司有主Server
但必須在Linux用C語法操作
去連到Server的MariaDB
做存取資料的動作
而且公司內部每台Linux版本都不同
有Google但老實說還是沒概念
想請教前輩有沒有寫過類似的case
可以幫小弟指點迷津。
作者: bluecadence (Maxwell's demon)   2020-07-17 01:02:00
你要先安裝 mariadb 的 development lib 以及 headerfiles。例如在 debian 上,你得安裝 libmariadbclient-dev系統安裝套件理論上應該會自動把 lib PATH 搞定。所以你寫C的時候只要把 mysql.h 正確 include 進來,就能使用 client APIs 了。
作者: bitlife (BIT一生)   2020-07-17 08:53:00
開發環境如同樓上推文.另外就是api差異,windows很多年沒用不確定現在的主流api架構為何(以前是odbc,以及各程式語言在其上架構的class library),Java則是jdbc(以及建構在jdbc上的各框架的class library), linux則是各db提供的capi,概念上有點像php. 可以找c範例及php範例研究一下,基本的CRUD很快就能弄出來,進階的再詳讀manual
作者: relaughter (好好笑)   2020-07-18 23:17:00
照理說只要安裝 mysql client 就可以連到 server抱歉沒看仔細,要用 C 去 call api,可能要找文件
作者: NealPope (尼爾教皇)   2020-07-21 10:53:00
我編譯下gcc conn.c -o -mdb.o -lmariadbclient -lpthread -lm -ldl -lssl -lcryp它回 /bin/ld: unrecognised emulation mode: db.oSupported emulations: elf_x86_64 elf_x86_64 elf32_x86_64 elf_i386 i386lunux elf_liom elf_klomcollect2: error: ld returned 1 exit status這是什麼原因呢QQ
作者: bitlife (BIT一生)   2020-07-21 12:06:00
你應該是想要編譯成mdb.o? 把檔名前面的 - 號拿掉
作者: NealPope (尼爾教皇)   2020-07-21 15:30:00
顯示 cannot find -lmariadbclientcollect2: error: ld returned 1 exit status一直編譯失敗QQ
作者: bitlife (BIT一生)   2020-07-21 16:12:00
那意思是找不到mariadbclient.a 用-L指定所在目錄給gcc
作者: bluecadence (Maxwell's demon)   2020-07-21 16:28:00
cc `mysql_config --libs`或者 cc `mariadb_config --libs` 如果是mariadb你在 shell 底下下指令 mariadb_config --libs 就會知道這在做什麼事了
作者: NealPope (尼爾教皇)   2020-07-22 08:26:00
有東西出來了!它跑出a.outa.out是執行檔嗎?
作者: bitlife (BIT一生)   2020-07-22 09:39:00
如果你後來的命令沒用 -o 指定輸出檔名,那確實會叫a.out這些都基本命令,如果你後續要在linux上生活一陣子,要善用man指令 man gcc
作者: NealPope (尼爾教皇)   2020-07-23 09:24:00
突然有個問題有台32位元的Linux下mysql_config --libs,它顯示mysql_config: command not found要如何讓這台32位元的也能順利gcc編譯出執行檔呢
作者: bitlife (BIT一生)   2020-07-23 10:02:00
你這樣問題會問不完,看你們急不急,急就請個臨時顧問,不急就去看一下基本shell概念,工程師如果連環境都不熟,編譯成功也只是災難的開始
作者: brli7848 (無理阿?)   2020-07-23 14:27:00
mariadb的wiki翻完了沒?
作者: okgogogo ( )   2020-07-25 02:25:00
作者: ctrlbreak   2020-07-25 12:15:00
學一下怎麼包成docker再佈署到不同機器(linux)...

Links booklink

Contact Us: admin [ a t ] ucptt.com