"cannot find-lssl; cannot find-lcrypto" lors de l'installation de mysql-python en utilisant la bibliothèque mariaDB

j'ai du mal à installer le mysql-python pip à l'échelle du système ou dans un venv sur Ubuntu 14.04 avec MariaDB 10 installé. Également essayé avec MariaDB 5.5 et d'obtenir la même erreur. Je n'ai pas ce problème avec le serveur MySQL vanilla installé.

j'ai installé ce qui suit via apt-get:

  • build-essential
  • python-dev
  • libmariadbclient-dev (c'est le MariaDB remplacement pour libmysqlclient-dev)
  • python-mysqldb

à l'origine, j'ai pensé que c'était un problème d'installation dans un venv mais j'ai remarqué par la suite que mysql-python n'installera pas non plus dans l'ensemble du système. Vous trouverez ci-dessous les cmd que j'avais l'habitude d'installer dans un venv.

virtualenv venv
. venv/bin/activate
pip install mysql-python==1.2.5

In file included from _mysql.c:44:0:
/usr/include/mysql/my_config.h:439:0: warning: "HAVE_WCSCOLL" redefined [enabled by default]
 #define HAVE_WCSCOLL
^
In file included from /usr/include/python2.7/pyconfig.h:3:0,  
                 from /usr/include/python2.7/Python.h:8,
                 from _mysql.c:29:
/usr/include/x86_64-linux-gnu/python2.7/pyconfig.h:911:0: note: this is the location of the     previous definition
 #define HAVE_WCSCOLL 1

^x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions     -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmariadbclient_r -lpthread -lz -lm -lssl -lcrypto -ldl -o build/lib.linux-x86_64-2.7/_mysql.so
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
collect2: error: ld returned 1 exit status

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /root/env/bin/python -c "import setuptools, tokenize;__file__='/root/env/build/mysql-    python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('rn', 'n'), __file__, 'exec'))" install --record /tmp/pip-EyhO2v-record/install-record.txt --single-version-externally-managed --compile --install-headers /root/env/include/site/python2.7 failed with error code 1 in /root/env/build/mysql-python
Storing debug log for failure in /root/.pip/pip.log
17
demandé sur Braiam 2014-09-22 21:09:14

3 réponses

j'ai fait comme tu l'as fait, et encore ne pouvait pas reproduire le problème:

(venv)➜  src  pip install mysql-python==1.2.5
Downloading/unpacking mysql-python==1.2.5
  Downloading MySQL-python-1.2.5.zip (108kB): 108kB downloaded
  Running setup.py (path:/home/braiam/src/venv/build/mysql-python/setup.py) egg_info for package mysql-python

Installing collected packages: mysql-python
  Running setup.py install for mysql-python
    building '_mysql' extension
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing
    In file included from _mysql.c:44:0:
    /usr/include/mysql/my_config.h:439:0: warning: "HAVE_WCSCOLL" redefined
     #define HAVE_WCSCOLL
     ^
    In file included from /usr/include/python2.7/pyconfig.h:3:0,
                     from /usr/include/python2.7/Python.h:8,
                     from _mysql.c:29:
    /usr/include/x86_64-linux-gnu/python2.7/pyconfig.h:911:0: note: this is the location of the previous definition
     #define HAVE_WCSCOLL 1
     ^
    x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmariadbclient_r -lpthread -lz -lm -lssl -lcrypto -ldl -o build/lib.linux-x86_64-2.7/_mysql.so

Successfully installed mysql-python
Cleaning up...

mais, il y avait deux messages que vous aviez que je n'avais pas, à savoir:

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto

si vous n' ld -lcrypto --verbose ou ld -lssl --verbose ne pas produire ces résultats:

➜  src  ld -lcrypto --verbose | grep succeeded
attempt to open //usr/lib/x86_64-linux-gnu/libcrypto.so succeeded
ld: warning: cannot find entry symbol _start; not setting start address
➜  src  ld -lssl --verbose | grep succeeded
attempt to open //usr/lib/x86_64-linux-gnu/libssl.so succeeded
ld: warning: cannot find entry symbol _start; not setting start address

Donc, pour résoudre ce assurez-vous d'avoir installé le libssl-dev paquet qui fournit les deux bibliothèques.

25
répondu Braiam 2014-09-22 17:42:23

je rencontre la même erreur sur MacOS mais il n'y a pas de "/usr/bin/ld: cannot find-lssl" pour moi.

résolu par les étapes suivantes:

Étape 1. Assurez-vous que vous avez installé openssl avec homebrew.

brew install openssl

Étape 2. Dans un terminal:

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

Pour Linux, vous pouvez aussi essayer yum install votre bibliothèque manquante et ajoutez - les à LIBRARY_PATH.

4
répondu Shaofei Cheng 2017-04-21 09:25:51

Pour CentOS:

sudo yum install openssl-devel
0
répondu user6389186 2018-08-29 06:05:56