AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 445374
Accepted
msam
msam
Asked: 2018-05-23 06:59:56 +0800 CST2018-05-23 06:59:56 +0800 CST 2018-05-23 06:59:56 +0800 CST

在 cygwin 下编译 i3 - 找不到 libiconv 库

  • 772

我正在尝试在 Cygwin 2.884 (Windows 7) 下编译 i3 版本 4.14.1。我已经通过 Cygwin 安装程序安装了所需的 libiconv 库,但是在运行 ./configure 时出现此错误:

configure: error: in `/home/msamec/Downloads/i3-4.14.1/x86_64-unknown cygwin':
configure: error: cannot find the required iconv_open() function despite trying 
to link with -liconv
See `config.log' for more details

有什么线索可以帮助它找到图书馆吗?

我曾尝试手动编译库 libiconv-1.13.1 但遇到了一些我不知道如何解决的错误:

libtool: link: /bin/gcc -shared  .libs/localcharset.o .libs/relocatable.o      -o .libs/cygcharset-1.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libcharset.dll.a
.libs/relocatable.o: In function `DllMain':
/home/msamec/Downloads/libiconv-1.13.1/libcharset/lib/./relocatable.c:324: undefined reference to `cygwin_conv_to_posix_path'
/home/msamec/Downloads/libiconv-1.13.1/libcharset/lib/./relocatable.c:324:(.text+0x113): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `cygwin_conv_to_posix_path'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:59: libcharset.la] Error 1
make[2]: Leaving directory '/home/msamec/Downloads/libiconv-1.13.1/libcharset/lib'
make[1]: *** [Makefile:34: all] Error 2
make[1]: Leaving directory '/home/msamec/Downloads/libiconv-1.13.1/libcharset'
make: *** [Makefile:42: lib/localcharset.h] Error 2

我已经 grepped iconv_open() 函数名称并在 cygwin 文件夹中找到它

/usr/i686-pc-cygwin/sys-root/usr/include/iconv.h

并且也在 libiconv 文件夹中

/usr/include/iconv.h

但由于某种原因,配置脚本无法找到它。

这是我的config.log

这是我的 iconv.h https://gist.github.com/anonymous/0b117d1680954d591f989256b508bfc5

我检查了这个库文件 inconv.h 在 Ubuntu 上的位置。Unlinke 在 cygwin 中位于 /lib/ 中,而在 cygwin 中位于 /usr/include/ 中。尝试将库复制到该位置,但这也无济于事。我也能够在我的家庭 Windows 10 上重现该问题。

编辑:这是我正在使用的配置文件:在此处输入链接描述

compiling libraries
  • 1 1 个回答
  • 1123 Views

1 个回答

  • Voted
  1. Best Answer
    matzeri
    2018-05-23T20:18:26+08:002018-05-23T20:18:26+08:00

    测试失败为

    | char iconv_open ();
    | int
    | main ()
    | {
    | return iconv_open ();
    |   ;
    |   return 0;
    | }
    configure:6391: /bin/gcc -o conftest.exe    conftest.c -liconv  -lev  >&5
    /tmp/ccz9hxNr.o:conftest.c:(.text+0xe): undefined reference to `iconv_open'
    /tmp/ccz9hxNr.o:conftest.c:(.text+0xe): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `iconv_open'
    

    iconv_open在图书馆找libiconv,错了。测试代码应该使用提供/usr/include/iconv.h 的

    #define iconv_open libiconv_open
    

    和 cygwin 库libiconv导出:

    $ objdump -x /usr/lib/libiconv.dll.a | grep iconv_open
    [  5](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x0000000000000000 libiconv_open_into
    [  6](sec  3)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x0000000000000000 __imp_libiconv_open_into
    [  5](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x0000000000000000 libiconv_open
    [  6](sec  3)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x0000000000000000 __imp_libiconv_open
    

    符号libiconv_open。您需要更正测试才能使用iconv.h.

    测试定义在configure.ac

    AC_SEARCH_LIBS([iconv_open], [iconv], , [AC_MSG_FAILURE([cannot find the required iconv_open() function despite trying to link with -liconv])])
    

    一种可能的解决方法是更改​​它以测试这两个选项。

    AC_SEARCH_LIBS([iconv_open],[iconv],,
    AC_SEARCH_LIBS([libiconv_open],[iconv],,[AC_MSG_FAILURE([cannot find the required iconv_open() function despite trying to link with -liconv])]))
    

    免责声明:未经测试,您需要运行autoreconf才能重建configure

    • 1

相关问题

  • perl-Net-IP 包与 Net-IP 包相同吗?

  • Meson 找不到 Boost 库

  • 如何在 Gentoo Linux 系统上高效地重新编译所有内容?

  • Parabola (Arch-like) - ICU 更新导致某些程序需要两个不同版本的 ICU 库。两者都无法启动。无法复制

  • 自编译 OpenVPN 不会从 systemd 启动

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve