Я создал программу C, которая использует libmcrypt. Я собирал его много раз в машине CentOS, но теперь, пытается сделать то же самое в Ubuntu, я получаю это:Невозможно скомпилировать программу на Ubuntu, которая использует libmcrypt
/tmp/ccM2ugbq.o: In function `encrypt':
util.c:(.text+0xa1): undefined reference to `mcrypt_module_open'
util.c:(.text+0xc6): undefined reference to `mcrypt_enc_get_iv_size'
util.c:(.text+0x134): undefined reference to `mcrypt_generic_init'
util.c:(.text+0x1dc): undefined reference to `mcrypt_generic'
util.c:(.text+0x1fa): undefined reference to `mcrypt_module_close'
/tmp/ccM2ugbq.o: In function `decrypt':
util.c:(.text+0x288): undefined reference to `mcrypt_module_open'
util.c:(.text+0x296): undefined reference to `mcrypt_enc_get_iv_size'
util.c:(.text+0x304): undefined reference to `mcrypt_generic_init'
util.c:(.text+0x375): undefined reference to `mdecrypt_generic'
util.c:(.text+0x380): undefined reference to `mcrypt_module_close'
, хотя я установил libmcrypt и spacified флаги должным образом при компиляции (-I/USR/включать -L/USR/Lib -lmcrypt)
Может кто-нибудь наставит меня о том, как получить работу компиляции правильно с libmcrypt?
EDIT: страницы человека говорит: Compile как "куб.см prog.c -lmcrypt", или "куб.см prog.c -lmcrypt -lltdl" в зависимости от вашей установки. Я также установил libltdl-dev, но он не работает.
EDIT 1: информация система: версия (работает uname -r
):
3.5.0-25-родовой
релиз (работает lsb_release -a
):
Нет доступных модулей LSB.
Дистрибьютор ID: Ubuntu
Описание: Ubuntu 12,10
выпуска: 12,10
Codename: квантовое
EDIT 2:
Поскольку @teppic просилмне показать команду компиляции, я решил свою проблему, но мне нужны объяснения. Пыльник я подробно тему:
команду, которую я так и не удалось:
куб.см -Wall -I ../ путь/к/включать -lmcrypt ./a_file.c ./some/ другой/file.c ./some/other/files.c ./main/file.c -I/некоторые/включить/путь -lother_lib -o ./bin/out
После этого я только положить -lmcrypt
в конце команды и удалил его с первого места, и он сработал. В моем первоначальном вопросе я сказал вам, что я скомпилировал его раньше в CentOS, и все сработало нормально. Это правда, даже если в CentOS команда компиляции была первой (возможно, некоторые файлы различаются по порядку или некоторые библиотеки).
Может ли кто-нибудь объяснить мне, как порядок флагов влияет на успех компиляции или неудачу?
Вы установили 'libmcrypt-dev'? –
@WillPalmer да, я также установил * libltdl-dev * и включил его, но такое же поведение. – artaxerxe
Вы можете дать точную информацию о ОС? – acarlow