You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用libzip的C程序GCC基础链接问题求助

解决libzip编译时的未定义引用问题

问题根源

你遇到的链接错误是因为GCC的库链接顺序错误:链接器会按命令行顺序处理输入,当你把-lzip放在源文件sample.c前面时,链接器先处理libzip库,此时还没有看到sample.c里的zip_open、zip_close引用,不会保留库中的对应符号;等处理sample.c时,需要的符号已经找不到了。

正确编译命令

只需把库参数-lzip放到源文件之后即可:

gcc sample.c -I/usr/include -L/usr/lib/x86_64-linux-gnu -lzip

因为Ubuntu已经将libzip的头文件和库路径加入了GCC的默认搜索路径,所以可以简化为:

gcc sample.c -lzip

如果需要指定输出可执行文件的名称,添加-o参数:

gcc sample.c -lzip -o zip_test

额外代码修正

你的测试代码里有个小问题:错误提示中使用了argv[1],但实际定义的文件名是file_name,如果运行时没有传入参数,argv[1]会是NULL,可能导致异常。建议修改为:

printf("Cannot open ZIP %s archive: %d\n", file_name, err);

内容的提问来源于stack exchange,提问作者erixoltan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:21:00