静的ライブラリを作成する必要があり (動的ライブラリを作成するオプションではありません)、この静的ライブラリにはtimer_create
fromなどを使用する関数がありますtime.h
。
somelib.h:
#include <time.h>
int do_something(void);
somelib.c:
int do_something(void){
timer_t timer;
struct sigevent sevp;
sevp.sigev_notify = SIGEV_SIGNAL;
sevp.sigev_signo = SIGRTMIN;
sevp.sigev_value.sival_ptr = NULL;
int ret = timer_create(CLOCK_MONOTONIC, &sevp, &timer);
timer_delete(timer);
return 0;
}
コードは実際には無意味であり、次のような私の問題を説明するために librt にリンクする必要があります。
somelib.c をコンパイルした後:
gcc -c -o somelib.o somelib.c -lrt
静的ライブラリを作成します。
ar rcs somelib.a somelib.o
それに対してリンクすると、次のエラーが発生します。
gcc -o someexec someexec.c -lrt ./somelib.a
戻り値:
somelib.c:(.text+0x30): undefined reference to `timer_create'
somelib.c:(.text+0x44): undefined reference to `timer_destroy'
これは私の問題の最小限の例です。これを修正できるかどうかはわかりませんが、私の理解では、静的ライブラリは作成時にlibrtの場所を知る必要があり、動的であるため、静的ライブラリにリンクしないと不可能であるということでした。 librt のバージョン。それでも私は静的ライブラリをあまり使用しないので、このようなことを行う方法があるかどうか知りたい.
コンパイラのバージョン: gcc 4.8.1 他のフラグは設定されていません。