Re: Cyclictest compile error when cross compiling for AT91SAM9260
From: Frank Rowand <hidden>
Date: 2012-09-27 19:02:56
On 09/27/12 01:23, Forconi wrote:
Hi, I made a cleanup and a fresh clone of the git repository. This is what I get running make: $ make CC=arm-unknown-linux-gnu-gcc src/pi_tests/pip_stress.c:240:2: error: #error _POSIX_THREAD_PROCESS_SHARED is not defined src/pi_tests/pi_stress.c:78:2: error: #error "Can't run this test without PI Mutex support" arm-unknown-linux-gnu-gcc -D VERSION_STRING=0.84 -c src/cyclictest/cyclictest.c -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 src/cyclictest/cyclictest.c: In function 'timerthread': src/cyclictest/cyclictest.c:700: warning: implicit declaration of function 'pthread_setaffinity_np' arm-unknown-linux-gnu-gcc -D VERSION_STRING=0.84 -c src/lib/rt-utils.c -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 arm-unknown-linux-gnu-gcc -D VERSION_STRING=0.84 -c src/lib/error.c -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 arm-unknown-linux-gnu-gcc -D VERSION_STRING=0.84 -c src/lib/rt-get_cpu.c -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 ar rcs librttest.a rt-utils.o error.o rt-get_cpu.o arm-unknown-linux-gnu-gcc -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 -o cyclictest cyclictest.o librttest.a -lrt -lpthread -lrttest -L. cyclictest.o: In function `timerthread': cyclictest.c:(.text+0x17ac): undefined reference to `pthread_setaffinity_np' collect2: ld returned 1 exit status make: *** [cyclictest] Error 1 It seems that the pthread_setaffinity_np is missing in pthread library (maybe I have an old lib?)
These errors look possibly more reasonable than the original errors. And possibly
just lack of support for the features as you suggest with "maybe I have an old lib".
Another possibility is that your cross tools are not pulling in the right header
files and libraries.
(1) pip_stress.c:240:2: error: #error _POSIX_THREAD_PROCESS_SHARED is not defined
Your environment is missing the feature. If it existed, _POSIX_THREAD_PROCESS_SHARED
would be defined in the <bits/posix_opt.h> that your cross tools are pulling in.
The include chain is:
src/pi_tests/pip_stress.c
src/include/pip_stress.h
<unistd.h>
<bits/posix_opt.h>
If you think the header files from your cross tools should define _POSIX_THREAD_PROCESS_SHARED
then you can verify which header file is used for <bits/posix_opt.h> by:
arm-unknown-linux-gnu-gcc -D VERSION_STRING=0.84 -c src/pi_tests/pip_stress.c -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 -C -E >junk_pip_stress
grep posix_opt.h junk_pip_stress
(2) cyclictest.c:700: warning: implicit declaration of function 'pthread_setaffinity_np'
Your environment is missing the feature. If it existed, pthread_setaffinity_np() would
be defined in <pthread.h>. This warning is consistent with your pthread library not
having pthread_setaffinity_np(), which is reported by the link error
"undefined reference to `pthread_setaffinity_np'".
You can verify which header file is used for <pthread.h> by:
arm-unknown-linux-gnu-gcc -D VERSION_STRING=0.84 -c src/cyclictest/cyclictest.c -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include -O2 -C -E >junk_cyclictest
grep pthread.h junk_cyclictest
If you think your pthread library should include this feature, then verify which
pthread library the linker is pulling in.
-Frank