私は、1つのlibへの参照を持つオブジェクトコードをコンパイルしようとしています。これはlibexample.cのコードです:別のライブラリの関数への未定義の参照
#include "libexample.h"
#include <signal.h>
#include <time.h>
timer_t sched;
struct itimerspec timer = {{0, 0}, {0, 0}};
void init() {
struct sigaction sa;
sigemptyset(&sa.sa_mask);
sigaction(SIGALRM, &sa, NULL);
timer_create(CLOCK_PROCESS_CPUTIME_ID, NULL, &sched);
timer_settime(sched, TIMER_ABSTIME, &timer, NULL);
}
とサンプルプログラムの簡単なコード:
gcc libexample.c -c -lrt -o libexample.o
gcc example.c -lrt ibexample.o -o example
そして、私はこのとき取得:
#include "libexample.h"
int main() {
init();
return 0;
}
私はコンパイルするためにこれを使用します私は2行目でコンパイルしようとしています:
./libexample.so: undefined reference to `timer_create'
./libexample.so: undefined reference to `timer_settime'
誰かが私が間違っていることを知っていますか?
申し訳ありませんが、変更点については、-lrtでも問題が発生します。 –
これはgccへのパラメータの順序に過ぎませんでした。 -lrtを行末に置くと、問題が解決されます。 ありがとう –