Сообщение
  • Пожалуйста, прежде пройдите авторизацию

CC(KALKAN) Linux - ошибка при компиляции
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2

ТЕМА: CC(KALKAN) Linux - ошибка при компиляции

CC(KALKAN) Linux - ошибка при компиляции 1 год, 10 мес. назад #3369

  • Baitursynov
  • Новый участник
  • Постов: 6
  • Репутация: 0
Добрый день!

Может кто-нибудь подсказать:

Мне необходимо написать программу на C аналогичную KalkanGOST_test.cpp из примера СДК (SDK 2.0/CC(Kalkan)/examples/cpp/basic/KalkanGOST_test/KalkanGOST_test).

Подготовил для начала тестовый файл " test.c" в котором следующее:

#include <openssl/engine.h>
#include <openssl/ssl.h>
#include <openssl/pkcs12.h>
#include <openssl/err.h>

#include <stdio.h>

int main()
{
    printf("GOST example start...\n");
	ENGINE_load_openssl(); 
	ENGINE_load_gost();

	OpenSSL_add_all_algorithms();
        ENGINE_register_all_pkey_asn1_meths();
    
    /* TODO */

    return 0;
}


Для компиляции использую статичную библиотеку - CC(Kalkan)/Linux/static/x64

Дерево проекта:
/gost
/include
libcrypto.a
libssl.a
test.c

Пишу команду для компиляции:
gcc -o kncatest libcrypto.a libssl.a test.c -I./include

Выдает:
test.c:(.text+0xf): undefined reference to `ENGINE_load_openssl'
test.c:(.text+0x14): undefined reference to `ENGINE_load_gost'
test.c:(.text+0x19): undefined reference to `OPENSSL_add_all_algorithms_noconf'
test.c:(.text+0x1e): undefined reference to `ENGINE_register_all_pkey_asn1_meths'
collect2: error: ld returned 1 exit status


UPDATE

Компилирую:
gcc -o kncatest test.c libcrypto.a libssl.a -I./include

Выдает:
libcrypto.a(libpkcs11.o): In function `C_LoadModule':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/libp11/libpkcs11.c:94: undefined reference to `dlopen'
libcrypto.a(libpkcs11.o): In function `C_UnloadModule':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/libp11/libpkcs11.c:180: undefined reference to `dlclose'
libcrypto.a(KNCA_PKCS11.o): In function `C_Finalize':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11.c:141: undefined reference to `SCardReleaseContext'
libcrypto.a(KNCA_PKCS11_Sessions.o): In function `KNCA_OpenSession':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_Sessions.c:86: undefined reference to `SCardConnect'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_Sessions.c:106: undefined reference to `g_rgSCardT0Pci'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_Sessions.c:114: undefined reference to `g_rgSCardT1Pci'
libcrypto.a(KNCA_PKCS11_Sessions.o): In function `KNCA_CloseSession':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_Sessions.c:194: undefined reference to `SCardDisconnect'
libcrypto.a(KNCA_PKCS11_SlotsTokens.o): In function `KNCA_UpdateSlotsStates':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:104: undefined reference to `SCardGetStatusChange'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:109: undefined reference to `SCardListReaders'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:125: undefined reference to `SCardListReaders'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:157: undefined reference to `SCardListReaders'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:198: undefined reference to `SCardGetStatusChange'
libcrypto.a(KNCA_PKCS11_SlotsTokens.o): In function `KNCA_GetSlotList':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:383: undefined reference to `SCardEstablishContext'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SlotsTokens.c:393: undefined reference to `SCardGetStatusChange'
libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:184: undefined reference to `dlopen'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:188: undefined reference to `dlerror'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:204: undefined reference to `dlclose'
libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:228: undefined reference to `dlclose'
libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:252: undefined reference to `dlsym'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:256: undefined reference to `dlerror'
libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:286: undefined reference to `dlsym'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:290: undefined reference to `dlerror'
libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:457: undefined reference to `dladdr'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:467: undefined reference to `dlerror'
libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:474: undefined reference to `dlopen'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:478: undefined reference to `dlsym'
/home/ai/git/kkcrypt/crypto/dso/dso_dlfcn.c:479: undefined reference to `dlclose'
libcrypto.a(c_zlib.o): In function `zlib_stateful_init':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:155: undefined reference to `inflateInit_'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:167: undefined reference to `deflateInit_'
libcrypto.a(c_zlib.o): In function `zlib_stateful_finish':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:185: undefined reference to `inflateEnd'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:186: undefined reference to `deflateEnd'
libcrypto.a(c_zlib.o): In function `zlib_stateful_compress_block':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:207: undefined reference to `deflate'
libcrypto.a(c_zlib.o): In function `zlib_stateful_expand_block':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:235: undefined reference to `inflate'
libcrypto.a(c_zlib.o): In function `bio_zlib_free':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:520: undefined reference to `inflateEnd'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:526: undefined reference to `deflateEnd'
libcrypto.a(c_zlib.o): In function `bio_zlib_read':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:553: undefined reference to `inflateInit_'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:566: undefined reference to `inflate'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:571: undefined reference to `zError'
libcrypto.a(c_zlib.o): In function `bio_zlib_write':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:618: undefined reference to `deflateInit_'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:653: undefined reference to `deflate'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:658: undefined reference to `zError'
libcrypto.a(c_zlib.o): In function `bio_zlib_flush':
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:701: undefined reference to `deflate'
/home/ai/git/kkcrypt/crypto/comp/c_zlib.c:707: undefined reference to `zError'
libcrypto.a(KNCA_PKCS11_SCardComm.o): In function `KNCASCSendCmd':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/KNCA_PKCS11_SCardComm.c:34: undefined reference to `SCardTransmit'
libcrypto.a(Gzip.o): In function `ungzip':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/zlib/Gzip.c:16: undefined reference to `inflateInit2_'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/zlib/Gzip.c:45: undefined reference to `inflate'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/zlib/Gzip.c:86: undefined reference to `inflateEnd'
libcrypto.a(Gzip.o): In function `gzip':
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/zlib/Gzip.c:99: undefined reference to `deflateInit2_'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/zlib/Gzip.c:129: undefined reference to `deflate'
/home/ai/git/kkcrypt/engines/ccgost/epkcs11/PKCS11/zlib/Gzip.c:161: undefined reference to `deflateEnd'


Откуда в стак-стрейсе путь "/home/ai/git/kkcrypt/crypto/"??

Пробовал определить переменную окружения LD_LIBRARY_PATH, также.
Изменено: 1 год, 10 мес. назад от Baitursynov.

Re: CC(KALKAN) Linux - ошибка при компиляции 1 год, 10 мес. назад #3370

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Добрый день!

Проблему удалось воспроизвести. Будем пересобирать библиотеки. Необходимо некоторое время.
А вы действительно хотите использовать статические библиотеки? Т.к. при обновлении библиотек вам необходимо будет пересобирать весь ваш проект. Использование динамических библиотек дает вам больше гибкости.
Модератор

Re: CC(KALKAN) Linux - ошибка при компиляции 1 год, 10 мес. назад #3371

  • Baitursynov
  • Новый участник
  • Постов: 6
  • Репутация: 0
Я пытался использовать dynamic, но при компиляции gcc ругался на один из .h файлов, поэтому перешел на static. Я попробую собрать с dynamic и по результатам прикреплю проект.
Мы пишем REST backend на Go, в любом случае все исходники собираются в один бинарник, включая C-шные библиотеки.

Re: CC(KALKAN) Linux - ошибка при компиляции 1 год, 10 мес. назад #3372

  • Baitursynov
  • Новый участник
  • Постов: 6
  • Репутация: 0
С dynamic след. ошибка:
/usr/bin/ld:./dynamic/x64/libcrypto.so: file format not recognized; treating as linker script
/usr/bin/ld:./dynamic/x64/libcrypto.so:1: syntax error


Прикрепил проект. Не положил папки dynamic и static, в атачмент не влезает. Их брал с SDK 2.0/CC(Kalkan)/Linux

test.c

#include <openssl/engine.h>
#include <openssl/ssl.h>
#include <openssl/pkcs12.h>
#include <openssl/err.h>

#include <stdio.h>

int main()
{
    printf("GOST example start...\n");
    ENGINE_load_openssl();
    // static 
    // ENGINE_load_gost();
    // dynamic
    ENGINE_load_builtin_engines();

	OpenSSL_add_all_algorithms();
    ENGINE_register_all_pkey_asn1_meths();
    
    /* TODO */

    return 0;
}


Makefile

.PHONY: build-static
build-static:
	gcc -o kncatest test.c ./static/x64/libcrypto.a ./static/x64/libssl.a -I./static/x64/include

.PHONY: build-dynamic
build-dynamic:
	gcc -o kncatest test.c -I./dynamic/x64/include -L./dynamic/x64 -lcrypto
Изменено: 1 год, 10 мес. назад от Baitursynov.

Re: CC(KALKAN) Linux - ошибка при компиляции 1 год, 10 мес. назад #3373

  • Murat Seisenov
  • Модератор
  • Постов: 391
  • Репутация: 19
Добрый день!

Удалите в каталоге ./dynamic/x64 файл libcrypto.so Должен остаться только libcrypto.so.1.0.0

Команда компиляции:
    gcc -o kncatest test.c -I./dynamic/x64/include -L./dynamic/x64 -lcrypto -lz -ldl
Модератор

Re: CC(KALKAN) Linux - ошибка при компиляции 1 год, 10 мес. назад #3376

  • Baitursynov
  • Новый участник
  • Постов: 6
  • Репутация: 0
Добрый день!

Файл libcrypto.so удалил. Возникает ошибка:

gcc -o kncatest test.c -I./dynamic/x64/include -L./dynamic/x64 -lcrypto -lz -ldl
/tmp/ccIWR0ms.o: In function `main':
test.c:(.text+0xf): undefined reference to `ENGINE_load_openssl'
test.c:(.text+0x19): undefined reference to `OPENSSL_add_all_algorithms_noconf'
collect2: error: ld returned 1 exit status
Makefile:7: recipe for target 'build-dynamic' failed
make: *** [build-dynamic] Error 1
  • Страница:
  • 1
  • 2
FaLang translation system by Faboba