提问人:Kanije Ashine Shie Shuai 提问时间:8/20/2023 最后编辑:jpsKanije Ashine Shie Shuai 更新时间:8/20/2023 访问量:58
宏定义的函数 - 编译错误
Macro Defined Functions - Compiling Error
问:
我正在尝试编译和创建 dilithium2 算法的可执行文件,这是一个量子密码学项目。我在编译过程中使用宏定义函数时遇到了麻烦。即使函数是用宏定义的,我也收到错误未定义的引用。你能帮我使用宏函数的诀窍是什么吗?
您可以从美国国家标准与技术研究院获得开源文件。 链接:来自NIST官方网站的开源代码。您可以下载 CRYSTAL-DILITHIUM。
以下是我的详细信息:
编译输出和相关错误:
====================[ Build | dilithium_test_speed | Debug ]====================
/opt/clion-2023.1.4/bin/cmake/linux/x64/bin/cmake --build /projectDirectory/cmake-build-debug --target dilithium_test_speed -j 10
[2/2] Linking C executable dilithium_test_speed
FAILED: dilithium_test_speed
: && /usr/bin/cc -g CMakeFiles/dilithium_test_speed.dir/test/cpucycles.c.o CMakeFiles/dilithium_test_speed.dir/test/speed_print.c.o CMakeFiles/dilithium_test_speed.dir/test/test_dilithium.c.o CMakeFiles/dilithium_test_speed.dir/randombytes.c.o CMakeFiles/dilithium_test_speed.dir/sign.c.o CMakeFiles/dilithium_test_speed.dir/poly.c.o CMakeFiles/dilithium_test_speed.dir/polyvec.c.o -o dilithium_test_speed -lcrypto -lssl && :
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/sign.c.o: in function `pqcrystals_dilithium2_ref_keypair':
/projectDirectory/sign.c:33: undefined reference to `pqcrystals_fips202_ref_shake256'
/usr/bin/ld: /projectDirectory/sign.c:58: undefined reference to `pqcrystals_dilithium2_ref_pack_pk'
/usr/bin/ld: /projectDirectory/sign.c:61: undefined reference to `pqcrystals_fips202_ref_shake256'
/usr/bin/ld: /projectDirectory/sign.c:62: undefined reference to `pqcrystals_dilithium2_ref_pack_sk'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/sign.c.o: in function `pqcrystals_dilithium2_ref_signature':
/projectDirectory/sign.c:100: undefined reference to `pqcrystals_dilithium2_ref_upack_sk'
/usr/bin/ld: /projectDirectory/sign.c:103: undefined reference to `pqcrystals_fips202_ref_shake256_init'
/usr/bin/ld: /projectDirectory/sign.c:104: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:105: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:106: undefined reference to `pqcrystals_fips202_ref_shake256_finalize'
/usr/bin/ld: /projectDirectory/sign.c:107: undefined reference to `pqcrystals_fips202_ref_shake256_squeeze'
/usr/bin/ld: /projectDirectory/sign.c:112: undefined reference to `pqcrystals_fips202_ref_shake256'
/usr/bin/ld: /projectDirectory/sign.c:137: undefined reference to `pqcrystals_fips202_ref_shake256_init'
/usr/bin/ld: /projectDirectory/sign.c:138: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:139: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:140: undefined reference to `pqcrystals_fips202_ref_shake256_finalize'
/usr/bin/ld: /projectDirectory/sign.c:141: undefined reference to `pqcrystals_fips202_ref_shake256_squeeze'
/usr/bin/ld: /projectDirectory/sign.c:176: undefined reference to `pqcrystals_dilithium2_ref_pack_sig'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/sign.c.o: in function `pqcrystals_dilithium2_ref_verify':
/projectDirectory/sign.c:245: undefined reference to `pqcrystals_dilithium2_ref_unpack_pk'
/usr/bin/ld: /projectDirectory/sign.c:246: undefined reference to `pqcrystals_dilithium2_ref_unpack_sig'
/usr/bin/ld: /projectDirectory/sign.c:252: undefined reference to `pqcrystals_fips202_ref_shake256'
/usr/bin/ld: /projectDirectory/sign.c:253: undefined reference to `pqcrystals_fips202_ref_shake256_init'
/usr/bin/ld: /projectDirectory/sign.c:254: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:255: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:256: undefined reference to `pqcrystals_fips202_ref_shake256_finalize'
/usr/bin/ld: /projectDirectory/sign.c:257: undefined reference to `pqcrystals_fips202_ref_shake256_squeeze'
/usr/bin/ld: /projectDirectory/sign.c:281: undefined reference to `pqcrystals_fips202_ref_shake256_init'
/usr/bin/ld: /projectDirectory/sign.c:282: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:283: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/sign.c:284: undefined reference to `pqcrystals_fips202_ref_shake256_finalize'
/usr/bin/ld: /projectDirectory/sign.c:285: undefined reference to `pqcrystals_fips202_ref_shake256_squeeze'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_reduce':
/projectDirectory/poly.c:33: undefined reference to `pqcrystals_dilithium2_ref_reduce32'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_caddq':
/projectDirectory/poly.c:51: undefined reference to `pqcrystals_dilithium2_ref_caddq'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_freeze':
/projectDirectory/poly.c:69: undefined reference to `pqcrystals_dilithium2_ref_freeze'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_ntt':
/projectDirectory/poly.c:143: undefined reference to `pqcrystals_dilithium2_ref_ntt'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_invntt_tomont':
/projectDirectory/poly.c:160: undefined reference to `pqcrystals_dilithium2_ref_invntt_tomont'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_pointwise_montgomery':
/projectDirectory/poly.c:181: undefined reference to `pqcrystals_dilithium2_ref_montgomery_reduce'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_power2round':
/projectDirectory/poly.c:203: undefined reference to `pqcrystals_dilithium2_ref_power2round'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_decompose':
/projectDirectory/poly.c:226: undefined reference to `pqcrystals_dilithium2_ref_decompose'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_make_hint':
/projectDirectory/poly.c:249: undefined reference to `pqcrystals_dilithium2_ref_make_hint'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_use_hint':
/projectDirectory/poly.c:271: undefined reference to `pqcrystals_dilithium2_ref_use_hint'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_uniform':
/projectDirectory/poly.c:372: undefined reference to `pqcrystals_dilithium2_ref_dilithium_shake128_stream_init'
/usr/bin/ld: /projectDirectory/poly.c:373: undefined reference to `pqcrystals_fips202_ref_shake128_squeezeblocks'
/usr/bin/ld: /projectDirectory/poly.c:382: undefined reference to `pqcrystals_fips202_ref_shake128_squeezeblocks'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_uniform_eta':
/projectDirectory/poly.c:462: undefined reference to `pqcrystals_dilithium2_ref_dilithium_shake128_stream_init'
/usr/bin/ld: /projectDirectory/poly.c:463: undefined reference to `pqcrystals_fips202_ref_shake128_squeezeblocks'
/usr/bin/ld: /projectDirectory/poly.c:468: undefined reference to `pqcrystals_fips202_ref_shake128_squeezeblocks'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_uniform_gamma1':
/projectDirectory/poly.c:496: undefined reference to `pqcrystals_dilithium2_ref_dilithium_shake256_stream_init'
/usr/bin/ld: /projectDirectory/poly.c:497: undefined reference to `pqcrystals_fips202_ref_shake256_squeezeblocks'
/usr/bin/ld: CMakeFiles/dilithium_test_speed.dir/poly.c.o: in function `pqcrystals_dilithium2_ref_poly_challenge':
/projectDirectory/poly.c:517: undefined reference to `pqcrystals_fips202_ref_shake256_init'
/usr/bin/ld: /projectDirectory/poly.c:518: undefined reference to `pqcrystals_fips202_ref_shake256_absorb'
/usr/bin/ld: /projectDirectory/poly.c:519: undefined reference to `pqcrystals_fips202_ref_shake256_finalize'
/usr/bin/ld: /projectDirectory/poly.c:520: undefined reference to `pqcrystals_fips202_ref_shake256_squeezeblocks'
/usr/bin/ld: /projectDirectory/poly.c:532: undefined reference to `pqcrystals_fips202_ref_shake256_squeezeblocks'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
文件结构:
├── test
│ ├── cpucycles.c
│ ├── cpucycles.h
│ ├── speed_print.c
│ ├── speed_print.h
│ ├── test_dilithium.c
│ ├── test_mul.c
│ ├── test_speed.c
│ └── test_vectors.c
├── aes256ctr.c
├── aes256ctr.h
├── api.h
├── config.h
├── fips202.c
├── fips202.h
├── ntt.c
├── ntt.h
├── packing.c
├── packing.h
├── params.h
├── poly.c
├── poly.h
├── polyvec.c
├── PQCgenKAT_sign.c
├── randombytes.c
├── randombytes.h
├── reduce.c
├── reduce.h
├── rng.c
├── rng.h
├── rounding.c
├── rounding.h
├── sign.c
├── sign.h
├── symmetric.h
├── symmetric-aes.c
├── symmetric-shake.c
├── Makefile
├── CMakelists.txt
CMakeLists.txt :
cmake_minimum_required(VERSION 3.12)
project(dilithium2 C)
set(CMAKE_C_STANDARD 11)
# Add your source files here
set(SOURCES
aes256ctr.c
fips202.c
ntt.c
packing.c
poly.c
polyvec.c
PQCgenKAT_sign.c
randombytes.c
reduce.c
rng.c
rounding.c
sign.c
symmetric-aes.c
symmetric-shake.c
)
# Add your test source files here
set(TEST_SOURCES
test/cpucycles.c
test/speed_print.c
test/test_dilithium.c
sign.c
poly.c
polyvec.c
)
# Add include directories
include_directories(
.
test
)
add_executable(dilithium_test_speed ${TEST_SOURCES})
# Link any necessary libraries (e.g., -lcrypto -lssl)
target_link_libraries(dilithium_test_speed crypto ssl)
答: 暂无答案
评论
pqcrystals_fips202_ref_shake256
.o