GCC 4.4.6-3 を使用して RHEL 6.2 を実行しています。いくつかのレガシー コードの単体テストを行っており、関数を with でラップしようとしてい-Wl
ます--wrap=function
。close
function は、 またはのようなシステム コールである可能性がありますmalloc
が、ほとんどの場合、リンクされたオブジェクト ファイルで定義された他の関数になります。
私のテスト check_GetRequestID.c は次のようになります。
#include<stdlib.h>
int __wrap_getpid()
{
return 10;
}
int main(void)
{
int x = API_GetRequestID();
return 0;
}
API_GetRequestID()
を呼び出すので、単体テストgetpid()
用に慎重に定義したものにラップします。
コンパイル コマンドは次のとおりです。
gcc -m64 -pthread -DLITTLEEND -fPIC -I. -Iother/include/folders -Wall -Wformat -DFIU_ENABLE=1 -D_GNU_SOURCE -D_THREAD_SAFE -DLINUX -Wpointer-arith -pthread -c check_GetRequestID.c
gcc -m64 -pthread -DLITTLEEND -fPIC -I. -Iother/include/folders -Wall -Wformat -DFIU_ENABLE=1 -D_GNU_SOURCE -D_THREAD_SAFE -DLINUX -Wpointer-arith -pthread -L. -Lother/lib/paths -lcrypt -lutil -Wl,--wrap=getpid -Wl,--wrap=otherfunctions object.o object2.o ... -o check_GetRequestID
リンク コマンドで、ラップされた関数を呼び出す関数ごとにエラーが発生します。関数 inobject2.o
が呼び出された場合、 in のgetpid()
未定義の参照がスローさ__wrap_getpid
れobject2.o
ます。これには、単体テストAPI_GetRequestID
しようとしている機能である が含まれます。
ソースまたは make ファイルの変更に関する提案はあり__wrap_getpid
ますgetpid()
か?
ありがとう。