【问题标题】:(QNAP NAS)Linux - Installing pycurl (libcurl.a not found)(QNAP NAS)Linux - 安装 pycurl (libcurl.a not found)
【发布时间】:2012-09-29 20:19:32
【问题描述】:

我正在尝试在我的 NAS (QNAP TS-459) 上安装 Pycurl,但出现错误“libcurl.a:没有这样的文件或目录”。 以下是来自控制台的日志:

[admin@MYSERVER pycurl-7.19.0]# uname -mrs
Linux 2.6.33.2 i686

ipkg status | grep curl
Depends: zlib, openssl, libcurl, diffutils, rcs, expat
Package: libcurl
Package: libcurl-dev
Depends: libcurl
Package: py26-curl
Depends: python26, libcurl (>=7.19.0), openssl
Depends: libcurl, libxml2, openssl, zlib

python setup.py install
ldd /usr/lib/libcurl.soobjdump -Tlddobjdump -T/usr/lib/libcurl.sosodumpls /usr/lib/libcurl.soequery belongscho LD_LIBRARY_PATH$LD_LIBRARY_PATH$ls -la /usr/local/lib/libcurl*echo $LIBCURL_IPK_DIRwhich libcurllocatepython setup.py install
Using curl-config (libcurl 7.24.0)
running install
running build
running build_py
running build_ext
building 'pycurl' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_CURL_OPENSSL=1 -DHAVE_CURL_OPENSSL=1 -DHAVE_CURL_OPENSSL=1 -DHAVE_CURL_SSL=1 -I/opt/include -I/share/MD0_DATA/.qpkg/Python/include/python2.7 -c src/pycurl.c -o build/temp.linux-i686-2.7/src/pycurl.o
gcc -pthread -shared build/temp.linux-i686-2.7/src/pycurl.o -L/opt/lib -L/home/slug/optware/ts509/staging/opt/lib -L/home/slug/optware/ts509/staging/lib -L/home/slug/optware/ts509/staging/lib -L/home/slug/optware/ts509/staging/opt/lib -L/home/slug/optware/ts509/staging/lib -L/home/slug/optware/ts509/staging/lib -lcurl -lssl -lssl -lssl -lcrypto -lrt -lz -o build/lib.linux-i686-2.7/pycurl.so -Wl,-rpath,/opt/lib -Wl,-rpath-link,/home/slug/optware/ts509/staging/opt/lib /opt/lib/libcurl.a -Wl,-rpath,/opt/lib -Wl,-rpath-link,/home/slug/optware/ts509/staging/opt/lib
gcc: /opt/lib/libcurl.a: No such file or directory
error: command 'gcc' failed with exit status 1
[admin@MYSERVER pycurl-7.19.0]# ls /opt/lib
lib/     libexec/ 
[admin@MYSERVER pycurl-7.19.0]# ls /opt/lib/libcu*
/opt/lib/libcurl.so        /opt/lib/libcurl.so.4.2.0
/opt/lib/libcurl.so.4
[admin@MYSERVER pycurl-7.19.0]# 

知道如何解决问题吗? 谢谢!

【问题讨论】:

    标签: linux libcurl pycurl


    【解决方案1】:

    今天我在 Synology NAS 上遇到了同样的问题。 问题是curl-config --libscurl-config --static-libs 都返回了一些输出。因此,pycurl 尝试为静态库和共享库进行编译。但是libcurl 包没有静态库。所以,我通过以下方式解决了这个问题:

    如果curl-config --built-shared 返回yes,则不要运行curl-config --static-libs

    这是补丁:

    diff --git a/setup.py b/setup.py
    index 1c3831b..69bc8b8 100644
    --- a/setup.py
    +++ b/setup.py
    @@ -96,9 +96,13 @@ else:
                     include_dirs.append(e[2:])
             else:
                 extra_compile_args.append(e)
    -    libs = split_quoted(
    -        os.popen("'%s' --libs" % CURL_CONFIG).read()+\
    -        os.popen("'%s' --static-libs" % CURL_CONFIG).read())
    +    libs = os.popen("'%s' --libs" % CURL_CONFIG).read()
    +    is_libcurl_shared = os.popen("'%s' --built-shared" % CURL_CONFIG).read()
    +    is_libcurl_shared = string.strip(is_libcurl_shared)
    +    if is_libcurl_shared != 'yes':
    +        libs = libs + \
    +            os.popen("'%s' --static-libs" % CURL_CONFIG).read()
    +    libs = split_quoted(libs)
         for e in libs:
             if e[:2] == "-l":
                 libraries.append(e[2:])
    

    适用于 v7.19.0。或者只是从 here

    获取最新版本的 setup.py

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2021-03-26
      • 1970-01-01
      • 2021-02-02
      相关资源
      最近更新 更多