我已经从源代码构建了 OpenSSL(一个故意的旧版本;使用 ./config && make && make test
构建)并且更愿意使用我构建的而不做 make install
来链接我的程序。
失败的命令是:
gcc -Wall -Wextra -Werror -static -Lopenssl/openssl-0.9.8k/ -lssl -lcrypto
-Iopenssl/openssl-0.9.8k/include -o myApp source1.o source2.o common.o`
我收到了一系列类似于以下的错误:
common.c:(.text+0x1ea): undefined reference to `SSL_write'
这让我觉得我的 OpenSSL 有点时髦。如果我在命令中省略 -Lopenssl/openssl-0.9.8k/
,错误将变为无法:
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
我是否错误地编译 OpenSSL?或者我应该如何最好地解决这个问题?
原文由 mrduclaw 发布,翻译遵循 CC BY-SA 4.0 许可协议
愚蠢的“Linux 主义”再次来袭!显然,我需要更改我的命令,以使
-L
和-l
东西 在最后(尽管man gcc
似乎表明):gcc -Wall -Wextra -Werror -static -o myApp source1.o source2.o common.o -Lopenssl/openssl-0.9.8k/ -lssl -lcrypto -Iopenssl/openssl-0.9.8k/include