[问题] 想请教如何在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