C 如何修改s_客户端的代码?

C 如何修改s_客户端的代码?,c,linux,networking,ssl,openssl,C,Linux,Networking,Ssl,Openssl,我正在openssl源代码中玩apps/s\u client.c。我想做一些更改并运行它,但在保存文件并执行全部生成或生成后,我的更改没有得到反映 例如,我将sc\u用法函数更改为: 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

我正在
openssl
源代码中玩
apps/s\u client.c
。我想做一些更改并运行它,但在保存文件并执行
全部生成
生成
后,我的更改没有得到反映

例如,我将
sc\u用法
函数更改为:

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");
然后,我在
apps
文件夹中保存并执行
make all
,但当我这样运行程序时:
openssl s_client abc
,我在输出中没有看到我介绍的行,
这是如何使用s_client


我哪里出错了?

您确定运行了正确的应用程序吗?试试
/openssl

在Linux中,默认情况下不会在当前目录中搜索可执行文件,因此您可能正在运行系统的
openssl

我想做一些更改并运行它,但在保存文件并执行“全部生成”或“生成”后,我的更改不会得到反映

一旦你知道了诀窍,那就更容易了

  • 正常配置OpenSSL库(
    Configure
  • 正常构建OpenSSL库(
    make depend&&make
  • 正常安装OpenSSL库(
    sudo make Install
  • s_client.c
  • 就地编译
    s_client.c
    apps/
    目录):
  • 这是润滑油。您必须构建一些附加的对象文件,如
    apps.o
    apps\u rand.o
    ,以支持
    s\u client.o

    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\u NO\u PSK
    ,因为声明(
    PSK\u key
    )已被注释掉。需要
    -I../
    ,因为
    e_os.h
    进行安装后未安装。如果OpenSSL在发布之前真的测试了他们的东西,那当然很好了

    然后:

    无需重建整个库或所有应用程序。不需要
    openssl s_客户端…

    $ ./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
     ...