【问题标题】:Why does building liblzma fail with "cannot find the library"?为什么构建 liblzma 会因“找不到库”而失败?
【发布时间】:2014-05-13 17:32:56
【问题描述】:

我从他们的网站安装了 mingw。 我安装了带有 iconv 和 intl、msys 和所有其他东西的开发包。

我运行./configure,然后运行make install。链接时,它会打印:

 ../../src/liblzma/liblzma.la  -lintl
libtool: link: cannot find the library `/home/keith/staged/mingw32/lib/libiconv.
la' or unhandled argument `/home/keith/staged/mingw32/lib/libiconv.la'
make[2]: *** [xzdec.exe] Error 1

我不知道 keith 是谁,也不知道它为什么会在那里寻找库。我尝试将 CCFLAGS CXXFLAGS 和 LDFLAGS 设置到我的包含和库文件夹 /usr/local/lib

没有雪茄……知道为什么会发生这种情况以及如何解决吗?

【问题讨论】:

    标签: mingw libtool


    【解决方案1】:

    这是 MinGW gettext 包的一个已知问题。有问题的“基思”基思·马歇尔(Keith Marshall)解释了 MinGW SourceForge 网站上in a bug report 发生的事情。

    一个相当难看的解决方法是实际创建一个/home/keith/staged/mingw32 文件夹,然后将符号链接添加到/mingw 中的必要文​​件夹,即:

    mkdir -p /home/keith/staged/mingw32
    cd $_
    ln -s /mingw/bin bin
    ln -s /mingw/lib lib
    

    (请注意,如果您的文件系统中不存在/mingw,您可以通过将此行添加到/etc/fstab 的底部来创建它:

    C:/MinGW                /mingw
    

    当然,假设您在 C:\MinGW 中安装了 MingW。关闭终端窗口并重新运行msys.bat 以使更改生效。)

    然后,您需要从方便地准备文件的人那里download libiconv.la,并将其复制到/home/keith/staged/mingw32/lib/

    这是一个可怕的 hack,但它对我有用。

    【讨论】:

      【解决方案2】:

      根据this bug report,最新的gettext包(gettext-0.18.3.2)有问题。

      我尝试了以下两种方法。似乎两者都运作良好。

      • 删除坏文件

        pushd /mingw/lib/ && rm libasprintf.la libgettextlib.la libgettextpo.la libgettextsrc.la libintl.la && popd

        或者你可以重命名它们。事实上,如果您使用文本编辑器打开这些 *.la 文件,您会在这些文件中看到 /home/keith/...。

      • 使用 gettext-0.18.3.1 包

        关闭 MSYS 并运行以下命令以使用旧版本:mingw-get upgrade "gettext=0.18.3.1-1*" ,当然要使用 PATH=C:\mingw\bin;%PATH%。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-06
        • 2016-01-14
        相关资源
        最近更新 更多