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

看板Linux作者 (尼爾教皇)時間4年前 (2020/07/17 00:04), 編輯推噓2(3142)
留言46則, 7人參與, 4年前最新討論串1/1
各位前輩抱歉~ 以往都是用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

07/17 01:02, 4年前 , 1F
你要先安裝 mariadb 的 development lib 以及 header
07/17 01:02, 1F

07/17 01:02, 4年前 , 2F
files。例如在 debian 上,你得安裝 libmariadbclien
07/17 01:02, 2F

07/17 01:03, 4年前 , 3F
t-dev
07/17 01:03, 3F

07/17 01:06, 4年前 , 4F
系統安裝套件理論上應該會自動把 lib PATH 搞定。
07/17 01:06, 4F

07/17 01:07, 4年前 , 5F
所以你寫C的時候只要把 mysql.h 正確 include 進來,
07/17 01:07, 5F

07/17 01:09, 4年前 , 6F
就能使用 client APIs 了。
07/17 01:09, 6F

07/17 08:53, 4年前 , 7F
開發環境如同樓上推文.另外就是api差異,windows很多年沒
07/17 08:53, 7F

07/17 08:54, 4年前 , 8F
用不確定現在的主流api架構為何(以前是odbc,以及各程式語
07/17 08:54, 8F

07/17 08:55, 4年前 , 9F
言在其上架構的class library),Java則是jdbc(以及建構在
07/17 08:55, 9F

07/17 08:55, 4年前 , 10F
jdbc上的各框架的class library), linux則是各db提供的c
07/17 08:55, 10F

07/17 08:56, 4年前 , 11F
api,概念上有點像php. 可以找c範例及php範例研究一下,基
07/17 08:56, 11F

07/17 08:57, 4年前 , 12F
本的CRUD很快就能弄出來,進階的再詳讀manual
07/17 08:57, 12F

07/18 23:17, 4年前 , 13F
照理說只要安裝 mysql client 就可以連到 server
07/18 23:17, 13F

07/18 23:18, 4年前 , 14F
抱歉沒看仔細,要用 C 去 call api,可能要找文件
07/18 23:18, 14F

07/21 10:53, 4年前 , 15F
我編譯下gcc conn.c -o -mdb.o -lmariadbclient -lpthre
07/21 10:53, 15F

07/21 10:53, 4年前 , 16F
ad -lm -ldl -lssl -lcryp
07/21 10:53, 16F

07/21 10:56, 4年前 , 17F
它回 /bin/ld: unrecognised emulation mode: db.o
07/21 10:56, 17F

07/21 11:00, 4年前 , 18F
Supported emulations: elf_x86_64 elf_x86_64 elf32_x8
07/21 11:00, 18F

07/21 11:00, 4年前 , 19F
6_64 elf_i386 i386lunux elf_liom elf_klom
07/21 11:00, 19F

07/21 11:01, 4年前 , 20F
collect2: error: ld returned 1 exit status
07/21 11:01, 20F

07/21 11:01, 4年前 , 21F
這是什麼原因呢QQ
07/21 11:01, 21F

07/21 12:06, 4年前 , 22F
你應該是想要編譯成mdb.o? 把檔名前面的 - 號拿掉
07/21 12:06, 22F

07/21 15:30, 4年前 , 23F
顯示 cannot find -lmariadbclient
07/21 15:30, 23F

07/21 15:32, 4年前 , 24F
collect2: error: ld returned 1 exit status
07/21 15:32, 24F

07/21 15:53, 4年前 , 25F
一直編譯失敗QQ
07/21 15:53, 25F

07/21 16:12, 4年前 , 26F
那意思是找不到mariadbclient.a 用-L指定所在目錄給gcc
07/21 16:12, 26F

07/21 16:28, 4年前 , 27F
cc `mysql_config --libs`
07/21 16:28, 27F

07/21 16:29, 4年前 , 28F
或者 cc `mariadb_config --libs` 如果是mariadb
07/21 16:29, 28F

07/21 16:34, 4年前 , 29F
你在 shell 底下下指令 mariadb_config --libs 就會
07/21 16:34, 29F

07/21 16:35, 4年前 , 30F
知道這在做什麼事了
07/21 16:35, 30F

07/22 08:26, 4年前 , 31F
有東西出來了!
07/22 08:26, 31F

07/22 08:34, 4年前 , 32F
它跑出a.out
07/22 08:34, 32F

07/22 09:04, 4年前 , 33F
a.out是執行檔嗎?
07/22 09:04, 33F

07/22 09:39, 4年前 , 34F
如果你後來的命令沒用 -o 指定輸出檔名,那確實會叫a.out
07/22 09:39, 34F

07/22 09:39, 4年前 , 35F
這些都基本命令,如果你後續要在linux上生活一陣子,要善用
07/22 09:39, 35F

07/22 09:39, 4年前 , 36F
man指令 man gcc
07/22 09:39, 36F

07/23 09:24, 4年前 , 37F
突然有個問題
07/23 09:24, 37F

07/23 09:35, 4年前 , 38F
有台32位元的Linux下mysql_config --libs,它顯示mysql_
07/23 09:35, 38F

07/23 09:35, 4年前 , 39F
config: command not found
07/23 09:35, 39F

07/23 09:36, 4年前 , 40F
要如何讓這台32位元的也能順利gcc編譯出執行檔呢
07/23 09:36, 40F

07/23 10:02, 4年前 , 41F
你這樣問題會問不完,看你們急不急,急就請個臨時顧問,不急
07/23 10:02, 41F

07/23 10:03, 4年前 , 42F
就去看一下基本shell概念,工程師如果連環境都不熟,編譯成
07/23 10:03, 42F

07/23 10:03, 4年前 , 43F
功也只是災難的開始
07/23 10:03, 43F

07/23 14:27, 4年前 , 44F
mariadb的wiki翻完了沒?
07/23 14:27, 44F

07/25 02:25, 4年前 , 45F

07/25 12:15, 4年前 , 46F
學一下怎麼包成docker再佈署到不同機器(linux)...
07/25 12:15, 46F
文章代碼(AID): #1V47gPxu (Linux)
文章代碼(AID): #1V47gPxu (Linux)