gpt4 book ai didi

gcc - 链接库的静态版本而不是动态版本

转载 作者:行者123 更新时间:2023-12-02 06:13:00 25 4
gpt4 key购买 nike

我正在尝试使用libjpeg在我的应用程序中。制作该项目会在 .libs 文件夹中生成一个 libjpeg.a。我想做的是在链接阶段使用这个文件。我已尝试以下操作:我将 libjpeg.a 复制到我的 C 代码所在的文件夹中。尝试链接

gcc libjpeg.a mycode.c -o executable_name

失败。如果我执行 gcc -ljpeg mycode.c ,则当我将 header 更改为指向而不是“libjpeg.h”时,编译会成功,但这显然会链接到该库的系统范围动态版本。

尝试使用相对或绝对路径链接也会失败:

gcc ./libjpeg.a mycode.c -o executable_name

我也尝试过静态选项:

gcc -static libjpeg.a mycode.c -o executable_name

链接器错误如下:

Linking...
gcc -std=c99 -Wall -Wextra -g -pedantic ./libjpeg.a ./libjpeg.a -lm obj/read_jpeg.o obj/utils.o -o test_jpeg
obj/read_jpeg.o: In function `read_JPEG_file':
/home/ustun/Downloads/jpeg_test/read_jpeg.c:37: undefined reference to `jpeg_std_error'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:45: undefined reference to `jpeg_CreateDecompress'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:46: undefined reference to `jpeg_stdio_src'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:47: undefined reference to `jpeg_read_header'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:48: undefined reference to `jpeg_start_decompress'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:62: undefined reference to `jpeg_read_scanlines'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:74: undefined reference to `jpeg_finish_decompress'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:75: undefined reference to `jpeg_destroy_decompress'
obj/read_jpeg.o: In function `read_JPEG_file_props':
/home/ustun/Downloads/jpeg_test/read_jpeg.c:93: undefined reference to `jpeg_std_error'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:100: undefined reference to `jpeg_CreateDecompress'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:101: undefined reference to `jpeg_stdio_src'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:102: undefined reference to `jpeg_read_header'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:103: undefined reference to `jpeg_start_decompress'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:113: undefined reference to `jpeg_read_scanlines'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:116: undefined reference to `jpeg_finish_decompress'
/home/ustun/Downloads/jpeg_test/read_jpeg.c:117: undefined reference to `jpeg_destroy_decompress'
collect2: ld returned 1 exit status
make: *** [test_jpeg] Error 1

您可以使用 Makefile 下载一个简单的项目 here .

最佳答案

您必须提供 libjpeg.a 的完整路径,如果 libjpeg.a 位于相对于编译位置的 .libs 文件夹中:

gcc  mycode.c -o executable_name .libs/libjpeg.a

如果您的特殊 libjpeg.a 在其他地方,请提供它的完整路径。

如果失败,您必须告诉我们会发生什么。 (详细信息很重要,因此请复制粘贴确切的错误和运行的确切命令行)。

关于gcc - 链接库的静态版本而不是动态版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512575/

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