gpt4 book ai didi

c - 如何使用 minilibx 进行编译?

转载 作者:行者123 更新时间:2023-11-30 16:08:39 27 4
gpt4 key购买 nike

我正在学校 (Mac OSX) 进行练习,并想在家里继续 (Ubuntu 16.04)。为了完成这个项目,我需要使用一个库:Minilibx(https://github.com/ttshivhula/minilibx)我在尝试 gcc 时遇到了问题。以下是 gcc 告诉我的内容:“mlx_init.c:(.text+0x2c) : référence indéfinie vers « XShmQueryVersion »”(英语中 undefined reference )。每个库(甚至 math.h)都有很多这样的错误。在学校编译时没有问题,但在家里就不行。

我用这一行编译:

gcc -Wall -Werror -Wextra -std=gnu99 -I. -g -lm -lGLEW -lglfw -lGL ${OBJS} minilibx/libmlx_Linux.a -o ${NAME}

与:

OBJS = ${SRC:%.c=%.o}

SRC = cub3d.c ${addprefix ${GNL_PATH}, $(GNL_FILE)} ${addprefix ${LIB_PATH}, $(LIB_FILE)}

GNL 和 LIB 是我的两个个人图书馆。

我试图改变我的编译方式,但我找不到问题所在。

最佳答案

经验法则:在链接命令行上,库位于目标文件之后,而不是之前。

如果将库放在目标文件之前,某些系统将不会记录库定义的符号,因为当命令行从左到右处理时,没有对库中任何函数的未定义的 undefined reference ,因此当扫描目标文件时,不会重新扫描库。

更改此:

gcc -Wall -Werror -Wextra -std=gnu99 -I. -g -lm -lGLEW -lglfw -lGL ${OBJS} \
minilibx/libmlx_Linux.a -o ${NAME}

至:

gcc -Wall -Werror -Wextra -std=gnu99 -I. -g ${OBJS} -lm -lGLEW -lglfw -lGL \
minilibx/libmlx_Linux.a -o ${NAME}

现在您有机会链接这些功能。在 Mac 上,使用 -lm 是不必要的,但无害;数学函数位于主系统库中。其他系统,尤其是 Linux,仍然有一个单独的数学库——主要用于歇斯底里的葡萄干(……呃,历史原因……)。

我不会惊讶地发现您也需要将 minilibx/libmlx_Linux.a 参数放在命令行的前面 - 紧接在 ${OBJS} 之后>.

关于c - 如何使用 minilibx 进行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59287273/

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