我在apps/s_client.c
源代码中使用openssl
。我想进行一些更改并运行它,但在保存文件并执行make all
或make
之后,我的更改未得到反映。
例如,我将sc_usage
函数更改为:
BIO_printf(bio_err,"This is how you use s_client\n");
BIO_printf(bio_err,"usage: s_client args\n");
BIO_printf(bio_err,"\n");
BIO_printf(bio_err," -host host - use -connect instead\n");
BIO_printf(bio_err," -port port - use -connect instead\n");
然后我保存并在make all
文件夹中执行apps
,但是当我通过执行此操作运行程序时:openssl s_client abc
,我看不到我引入的行,{ {1}},在输出中。
我哪里错了?
答案 0 :(得分:2)
我想进行一些更改并运行它,但是在保存文件并执行make all或make之后,我的更改没有得到反映。
一旦你了解了这些技巧,它就更容易了。
s_client.c
编译s_client.c
到位(apps/
目录):
export OPENSSLDIR=/usr/local/ssl/darwin
gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c apps.c
gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c app_rand.c
gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c s_cb.c
gcc -DOPENSSL_NO_PSK -DMONOLITH -I$OPENSSLDIR/include -I../ -c s_socket.c
gcc -DOPENSSL_NO_PSK -I$OPENSSLDIR/include -I../ app_rand.o apps.o s_cb.o s_socket.o \
$OPENSSLDIR/lib/libssl.a $OPENSSLDIR/lib/libcrypto.a s_client.c -o my_s_client.exe
需要OPENSSL_NO_PSK
,因为声明(psk_key
)已被注释掉。需要-I../
,因为在e_os.h
之后未安装make install
。如果OpenSSL在发布之前实际测试了它们的东西,那肯定会很好......
然后:
$ ./my_s_client.exe -connect www.google.com:443
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
i:/C=US/O=Google Inc/CN=Google Internet Authority G2
...
无需重建整个库或所有应用程序。无需openssl s_client ...
。
答案 1 :(得分:1)
您确定要运行正确的应用吗?试试./openssl
。
在Linux中,默认情况下不会搜索当前目录中的可执行文件,因此您可能正在运行系统openssl
。