tsocks は 8 年間まったく更新されていないので、tsocks に関する作業を行うのは楽しいサイド プロジェクトになると判断しました。これは GitHub でホストされています。
これまでのところ、コードに表面的な変更を加えただけですが、コンパイル エラーが発生しました。によるとdlopen(3)
:
廃止されたシンボル _init() および _fini()
[...]
これらのルーチンの使用 [...] は推奨されません。コンストラクタ/デストラクタ ルーチンは実行されないため (特別な措置を講じない限り)、それらを使用すると望ましくない動作が発生する可能性があります。
代わりに、ライブラリは __attribute__((constructor)) および __attribute__((destructor)) 関数属性を使用してルーチンをエクスポートする必要があります。
残念ながら、この変更 (commit f785c8e) がコンパイラ エラーの原因のようです。
gcc -fPIC -g -O2 -Wall -I. -c tsocks.c -o tsocks.o
gcc -fPIC -g -O2 -Wall -I. -c common.c -o common.o
gcc -fPIC -g -O2 -Wall -I. -c parser.c -o parser.o
gcc -fPIC -g -O2 -Wall -I. -static -o saveme saveme.c
gcc -fPIC -g -O2 -Wall -I. -o inspectsocks inspectsocks.c common.o -lc
gcc -fPIC -g -O2 -Wall -I. -o validateconf validateconf.c common.o parser.o -lc
gcc -fPIC -g -O2 -Wall -I. -o libtsocks.so.1.8 tsocks.o common.o parser.o -ldl -lc -rdynamic
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
誰でも私を助けることができますか?私は困惑しています。