mysql 命令 -c_关于命令行界面:如何使用C编译适用于macOS 10.13.x的mysql-connector-c?...

概要

我有一个小的c程序,它是一个标准的" hello world"应用程序,可以测试我可以相应地访问mysql连接驱动程序:

#include

#include"mysql.h"

int main(int argc, const char **argv)

{

printf("MySQL client version: %s\", mysql_get_client_info());

return 0;

}

当我使用以下内容编译时;我收到一个错误:

gcc src/main.c \\

-Wall \\

-Ilib/mysql-connector-c-6.1.11-macos10.12-x86_64/include \\

-o bin/test

Undefined symbols for architecture x86_64:

"_mysql_get_client_info", referenced from:

_main in main-59d4fb.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

然后,我尝试将mysql与以下链接:

gcc src/main.c \\

-Wall \\

-Ilib/mysql-connector-c-6.1.11-macos10.12-x86_64/include \\

-Llib/mysql-connector-c-6.1.11-macos10.12-x86_64/mysql-connector-c-6.1.11-src/libmysql \\

-lmysql \\

-o bin/test

ld: library not found for -lmysql

clang: error: linker command failed with exit code 1 (use -v to see invocation)

值得一提的是,我使用的不是c ++,也不是仅使用Vim和gcc的XCode,如上所示。

替代尝试

然后,我决定也许我在编译来自MySQL这个特定链接的源代码时做错了事,因此我删除了应用程序中的lib目录,并通过自制软件安装了它们:

我尝试了brew install mysql-connector-c,尽管相应地更改了-I -L -l,但也遇到了与上述相同的错误,新路径/usr/local/Cellar/...发生了完全相同的问题。

结论

我在任何已编译的mysql库中都找不到任何.c文件,但在我编译的源代码中确实找到了libmysql,并尝试链接也失败了的文件。我个人认为这是一个链接问题,我只是不知道是什么或如何,如果有人可以帮助我,我将非常感激。

任何可能想要查看-v响应的人,请参见以下内容:

Apple LLVM version 9.0.0 (clang-900.0.39.2)

Target: x86_64-apple-darwin17.3.0

Thread model: posix

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.13.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-cpu penryn -target-linker-version 305 -v -dwarf-column-info -debugger-tuning=lldb -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -I lib/mysql-connector-c-6.1.11-macos10.12-x86_64/include -I/usr/local/include -Wall -fdebug-compilation-dir /Users/ash/Projects/samp-db2 -ferror-limit 19 -fmessage-length 173 -stack-protector 1 -fblocks -fobjc-runtime=macosx-10.13.0 -fencode-extended-block-signature -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/v7/_rm0d0qx2r32ln2f7_dpnrw40000gn/T/main-3d5e25.o -x c src/main.c

clang -cc1 version 9.0.0 (clang-900.0.39.2) default target x86_64-apple-darwin17.3.0

ignoring nonexistent directory"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/local/include"

ignoring nonexistent directory"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/Library/Frameworks"

#include"..." search starts here:

#include <...> search starts here:

lib/mysql-connector-c-6.1.11-macos10.12-x86_64/include

/usr/local/include

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks (framework directory)

End of search list.

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -no_deduplicate -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o bin/cmig /var/folders/v7/_rm0d0qx2r32ln2f7_dpnrw40000gn/T/main-3d5e25.o -L/usr/local/lib -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/lib/darwin/libclang_rt.osx.a

> brew install mysql-connector-c

> clang mysql_connect_test.c -l mysqlclient -o mysql_test

> ./mysql_test

MySQL client version: 6.1.11

mysql_connect_test.c中的相同代码,一切正常。

> ls /usr/local/Cellar/mysql-connector-c/6.1.11/lib

libmysqlclient.18.dylib libmysqlclient.a        libmysqlclient.dylib

您的代码只需要链接到libmysqlclient。

在您的帖子中:

gcc src/main.c \\

-Wall \\

-Ilib/mysql-connector-c-6.1.11-macos10.12-x86_64/include \\

-o bin/test

这是错误的,因为您只是将库搜索路径传递给了gcc,而且还需要传递您应该链接的库,例如-lmysqlclient。

gcc src/main.c \\

-Wall \\

-Ilib/mysql-connector-c-6.1.11-macos10.12-x86_64/include \\

-Llib/mysql-connector-c-6.1.11-macos10.12-x86_64/mysql-connector-c-6.1.11-src/libmysql \\

-lmysql \\

-o bin/test

链接库的名称错误,并且mysql-connector-c-6.1.11-macos10.12-x86_64仅包含源代码? 如果是,则需要首先编译mysql-connector -c。

感谢您在这里的帮助,我想我意识到我读这篇文章的错误-我在上次尝试中确实使用了-lmysqlclient,但由于未进行编译,我无法链接到不存在的库,因此我尝试使用-lmysqlclient。 我以前确实编译过它,但是我没有使用正确的名称mysqlclient,因此我删除了它并使自己感到困惑。 看着它,我所需要做的就是从此处下载源代码,编译就是您说过的,那么我的错误实际上是-lmysql,我现在使用-lmysqlclient可以了。

我给Catalina的两分钱:

在Objective-C中使用外部C ++标头

使用mysql lib版本21可以正常工作。

不需要使用酿造或类似。

注意:

由于该库未签名。 只需在权利中:

(以XML格式):..

com.apple.security.cs.disable-library-validation

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值