【发布时间】:2017-08-29 15:07:00
【问题描述】:
我有一些 C 代码 #includes 文件 <mysql/mysql.h>。我在 Mac 上运行,无法弄清楚如何安装 mysql(在运行 SO 上找到的解决方案后,系统库中甚至不存在 mysql 目录)。我可以从源代码下载 MySQL,现在我有一个mysql.h 文件——在源代码的“包含”目录中。
但是,仅将此文件移动到系统库中显然不会使我的程序正常工作。我希望我需要编译库(我已经完成了),并将二进制文件移动到某个地方,以便可以链接到我的程序。
根据@RustyX 的建议,我安装了 Mac MySQL 包。这会将mysql.h 的副本放入/usr/local/mysql-5.7.19-macos10.12-x86_64/include/ 目录。然而:
1) 我正在使用gcc 编译.c 文件。我不确定如何配置 gcc 以包含有问题的目录。我试过了
-L(directory path)-- 安装的 Mac MySQL 包和我下载的 MySQL 源代码-- 但我得到以下错误:
ld: library not found for -lmysqlclient
我是否可以为mysqlclient 添加其他路径?还是要安装其他软件包?
2) 即使我确实包含它,它仍然找不到该文件,因为调用的文件名是<mysql/mysql.h>,它会找到的文件名是<include/mysql.h>。由于该文件被其他人使用,最好的做法是将include 目录重命名为mysql?还是要更改.c文件中的路径,然后每次提交前都改回来?
【问题讨论】:
-
Ehh.. 1) 安装mysql package, 2) 为您的项目配置额外的包含和库路径(类似于 /usr/local/mysql...)
-
尝试了您的解决方案,但卡住了;有关更新状态,请参阅上面的帖子。
-
我认为您混淆了包含和库。如果您已经完成
make install,它将打印创建/安装的目录和文件。您需要根据安装的方式设置正确的 -I 参数和 -L 参数。另外,您说您尝试使用 -L 与 dir。在那个目录下,你找到libmysqlclient.dylib安装了吗? -
@UnmannedPlayer 我的安装日志仍在终端中——但我不确定如何推断出正确的目录
based on how the install went。但是,当我做了-L(path to libmysqlclient.dylib),然后程序编译成功。完全出乎意料,因为包含该文件的目录实际上是隐藏的。以供将来参考(以防我必须使用另一个包执行此操作)-您怎么知道这是-L需要指向目录的文件?随意张贴作为答案。
标签: mysql c macos static-libraries include-path