Грешка при тестване на библиотека Paillier: (.text+0x72): недефинирана препратка към

Опитвам се да използвам тази библиотека на Paillier http://acsc.cs.utexas.edu/libpaillier/, това ще бъде само част от някои UDF, които се опитвам да направя за Mysql сървър

Това е част от моя Rakefile:

task :compile do
  puts 'Compiling the encryption / decryption program.'
  system("gcc -L/usr/local/lib/ -I/usr/local/include/ -lgmp -lpaillier #{config[:exec_file]}.c -o #{config[:exec_file]}")
end

Въпреки това получавам тази грешка:

cipher.c:(.text+0x72): undefined reference to `paillier_get_rand_devurandom'
cipher.c:(.text+0x79): undefined reference to `paillier_keygen'
cipher.c:(.text+0x85): undefined reference to `paillier_pubkey_to_hex'
cipher.c:(.text+0x95): undefined reference to `paillier_prvkey_to_hex'
cipher.c:(.text+0xe3): undefined reference to `paillier_freepubkey'
cipher.c:(.text+0xef): undefined reference to `paillier_freeprvkey'
/tmp/ccMPIY0I.o: In function `getKey':

Така че, моля, някой знае ли къде е проблемът?

Ps: exec_file е C файл, където включвам paillier.h


person Bochra    schedule 20.05.2017    source източник


Отговори (1)


Може да имате проблем с реда на аргументите във вашето gcc извикване. Библиотеките трябва да бъдат записани след изходния файл и изходния файл:

gcc -L/usr/local/lib/ -I/usr/local/include/ #{config[:exec_file]}.c -o #{config[:exec_file]} -lgmp -lpaillier

Вижте също този въпрос.

person nucleon    schedule 21.05.2017
comment
благодаря, че работи перфектно за мен, промених реда на изходния файл и библиотеката като този gcc #{config[:exec_file]}.c -o #{config[:exec_file]} -lgmp -lpaillier -L/usr/ local/lib/ -I/usr/local/include/ , очевидно поставянето на -l‹lib› преди изходните файлове е лоша практика, която може да доведе до недефинирани препратки при свързване. - person Bochra; 21.05.2017
comment
Да, трудно е да се развие интуиция за това как gcc изисква своите аргументи. Радвам се да чуя връзките сега. - person nucleon; 21.05.2017
comment
да, благодаря за това - person Bochra; 21.05.2017