gpt4 book ai didi

mysql - dyld : Library not loaded: libmysql. 16.dylib (MAC)

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:57 25 4
gpt4 key购买 nike

我今天开始试验 MySQL C API,我今天在我的 10.6.8 macbook 上从源代码编译了它,并推出了一个快速的 makefile + 应用程序框架。不过,我觉得有点生疏,因为我似乎无法正确链接它(现在看来已修复)或动态加载库(问题如下所述)。

我收到的确切错误如下:

$ make clean && make
gcc -L/usr/local/mysql/lib -I/usr/local/mysql/include -lmysql -lpthread -ggdb -Wall -o adapter main.c adapter.c

$ ./adapter
dyld: Library not loaded: libmysql.16.dylib
Referenced from: /tmp/./adapter
Reason: image not found
Trace/BPT trap

我环顾四周,出现了很多关于 install_name_tool 的结果。但是,在阅读了其中的一些之后,我仍然不完全理解这实际上是做什么的。有很多关于框架的讨论,这并不真正符合我期望参与这样一个简单项目的内容..

无论如何,这是我的代码(包括 makefile)。

ma​​in.c:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "adapter.h"

int main (int argc, char *argv[]) {
printf("Version: %s\n", get_version());
return 0;
}

适配器.c:

#include <mysql.h>

char *get_version () {
return (char *)mysql_get_client_info();
}

适配器.h:

char *get_version ();

生成文件:

CC = gcc
MYSQL_FLAGS = -L/usr/local/mysql/lib -I/usr/local/mysql/include -lmysql -lpthread
CFLAGS = -ggdb -Wall
OBJS =

adapter: $(OBJS)
$(CC) $(MYSQL_FLAGS) $(CFLAGS) -o adapter main.c adapter.c $(OBJS)

clean:
@rm -f *~ *.o adapter
@rm -rf *.dSYM

另外,请注意,这些文件确实存在:

$ ls /usr/local/mysql/lib
libmysql.16.0.0.dylib libmysql.dylib libmysqlclient.dylib
libmysql.16.dylib libmysqlclient.a libmysqlclient_r.dylib

$ ls /usr/local/mysql/include
atomic my_atomic.h my_md5.h myisampack.h sslopt-case.h
base64.h my_attribute.h my_net.h mysql.h sslopt-longopts.h
config-win.h my_base.h my_no_pthread.h mysql_com.h sslopt-vars.h
decimal.h my_bit.h my_nosys.h mysql_time.h t_ctype.h
errmsg.h my_bitmap.h my_pthread.h mysql_version.h thr_alarm.h
hash.h my_charsets.h my_stacktrace.h mysqld_error.h thr_lock.h
keycache.h my_config.h my_sys.h mysys typelib.h
lf.h my_dbug.h my_time.h mysys_err.h violite.h
m_ctype.h my_dir.h my_tree.h queues.h waiting_threads.h
m_string.h my_getopt.h my_trie.h service_versions.h wqueue.h
my_aes.h my_global.h my_uctype.h sha1.h
my_alarm.h my_libwrap.h my_vle.h sha2.h
my_alloc.h my_list.h my_xml.h sql_common.h

我有一种直觉,我的 Makefile 有问题,或者这是 Mac OS X 特有的问题,但实际上,我真的不确定问题是什么。

最佳答案

这是一个 dynamic linker错误,与源代码无关。有很多方法可以修复它。最简单的方法可能是在运行 adapter 之前将 /usr/local/mysql/lib 添加到 DYLD_LIBRARY_PATH。例如:

$ export DYLD_LIBRARY_PATH="${DYLD_LIBRARY_PATH}:/usr/local/mysql/lib"
$ ./adapter

关于mysql - dyld : Library not loaded: libmysql. 16.dylib (MAC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com