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

Ubuntu18.04下NDK编译安卓libusb提示'libintl.h'文件找不到报错

核心原因

你进行的是面向Android平台的NDK交叉编译,编译过程使用的是Android专属的Bionic C库,不会读取Ubuntu系统本地的/usr/include、/usr/lib等路径下的头文件和库文件,你安装的Ubuntu本地的libc6-dev、gettext包仅对本地x86程序编译有效,对NDK交叉编译没有帮助。

解决方案

  • 方案一(推荐,无额外依赖):禁用netcat的国际化(NLS)功能,直接移除libintl依赖
    进入jni/netcat目录,找到编译配置文件:
    1. 如果是用configure生成配置,执行configure时添加参数--disable-nls
    2. 如果直接使用Android.mk编译,在LOCAL_CFLAGS配置项中添加-DNO_GETTEXT -DNDEBUG参数
      配置完成后重新执行ndk-build即可。
  • 方案二(需要保留国际化功能):交叉编译libintl到Android平台
    下载gettext源码,将libintl模块的源码加入到项目jni目录中,修改Android.mk配置,添加libintl的头文件搜索路径,将libintl和netcat一起编译即可。
  • 方案三(临时快速修复):直接修改报错代码
    打开/home/crue/netcat_android/jni/netcat/src/intl.h,注释掉#include <libintl.h>行,同时将文件中所有gettext相关的宏定义直接替换为传入参数本身,比如将#define _(str) gettext(str)改为#define _(str) str即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:09:03