首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在MAC OSX上编译一个简单的mysql c应用程序时总是得到未定义的符号?

为什么我在MAC OSX上编译一个简单的mysql c应用程序时总是得到未定义的符号?
EN

Stack Overflow用户
提问于 2010-12-07 17:41:40
回答 3查看 2.6K关注 0票数 2

我正在使用MAC OSX,并试图编写一个“test”msyql应用程序,该应用程序只测试到本地数据库的连接:

代码语言:javascript
复制
#include <my_global.h>
#include <mysql.h>


int main(void)
{
    MYSQL mysql;

    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "examplemysql");
    if(!mysql_real_connect(&mysql, "localhost", "someuser", "somepassword", "sampledb", 0, NULL, 0))
    {
        fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql));
    }

}

我使用以下命令编译: gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib mysql.c

我得到以下错误

未定义符号

"_mysql_options",引用自:

cceohP7E.o中的_main

"_mysql_real_connect",引用自:

cceohP7E.o中的_main

"_mysql_init",引用自:

cceohP7E.o中的_main

"_mysql_error",引用自:

cceohP7E.o中的_main

ld:找不到符号

collect2: ld返回1个退出状态

我不是C/Unix专家,但我想学习。我知道我这里有64位的架构。这会是个问题吗?告诉我我做错了什么。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-07 18:33:04

就像其他人提到的,你错过了图书馆。幸运的是,MySQL通过命令行的mysql_config实现了这一点。

代码语言:javascript
复制
gcc `mysql_config --include` mysql.c `mysql_config --libs`
票数 3
EN

Stack Overflow用户

发布于 2010-12-07 17:51:21

您需要在共享库libmysql.so中链接,这些都是链接器错误,并试图查找其他符号。

就像这样..。

gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib mysql.c -lmysql

票数 1
EN

Stack Overflow用户

发布于 2012-06-05 19:09:13

我正在为OSX狮子和任何人更新这个答案.就因为这对我来说很难。

mysql_config是一个选项,或者自己指定gcc标志是另一个选项,但是如果没有正确的C连接器,则都会失败。

我在Lion10.7.4 Macbook air上下载了从http://ftp.dc.aleron.net/pub/mysql/Connector-C/获得的mysql-连接器-c-6.0.2-osx10.5-x86-64 bit.tar

解压缩所有文件并将各自的/bin /include和/lib文件复制到相应的/usr/local/bin、/usr/local/include和/usr/lical/lib目录作为根目录。

然后我使用gcc -o mysqlapp mysqlapp.c -L /usr/local/lib -l mysqlclient -lz -I /usr/local/include

C使用mysql.h,一切都编译并运行良好。我最初从www.mysql.com下载的连接器不能正常工作。我不知道那是怎么回事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4379775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档