【问题标题】:Undefined reference when compiling OpenSSL编译 OpenSSL 时未定义的引用
【发布时间】:2012-07-08 07:41:52
【问题描述】:

我不知道在这里做什么,我跑了make 并得到了这个:

make[2]: Entering directory `/tmp/openssl-1.0.1/test'
( :; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto  -ldl}"; LDCMD="${LDCMD:-gcc}"; LDFLAGS="${LDFLAGS:--DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -fno-exceptions -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM}"; LIBPATH=`for x in $LIBDEPS; do echo $x; done | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=rc4test} rc4test.o ${LIBDEPS} )
rc4test.o: In function `main':
rc4test.c:(.text+0x30): undefined reference to `OPENSSL_cpuid_setup'
collect2: ld returned 1 exit status
make[2]: *** [link_app.] Error 1
make[2]: Leaving directory `/tmp/openssl-1.0.1/test'
make[1]: *** [rc4test] Error 2
make[1]: Leaving directory `/tmp/openssl-1.0.1/test'
make: *** [build_tests] Error 1

我认为这是 gcc 的事情,但我不知道如何处理这个问题。我应该手动编译吗?

【问题讨论】:

  • 你的操作系统是什么,你给./config传递了什么参数?
  • 我尝试了一些东西 -fPIC, -fno-exceptions 和 ./config 和 Debian Squeeze 我知道我可以使用 apt-get,但我宁愿自己编译。
  • 无保证,但您可以尝试编辑crypto/cryptlib.c,查找包含#if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ) 的行并删除删除&& !defined(OPENSSL_CPUID_OBJ) 部分。你们相处融洽,见here
  • “未定义的引用”是一个 LINKER 的“东西”。您指定了链接器在给定库集中找不到的函数。检查您的拼写,检查您的-lxxx 类型库选项。 (你得到那个命令行了吗?!?不,不..我不想知道)
  • @Reinier 不,不行!不过谢谢!洛尼克斯,我试试看。

标签: gcc makefile openssl


【解决方案1】:

我遇到了同样的问题,并且能够通过将 -DOPENSSL_PIC 添加到配置调用来解决它:

./config -fPIC -DOPENSSL_PIC

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2012-08-16
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多