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