|
|
|
undefined reference to `__sync_val_compare_and_swap_4' при кросс компиляции
|
|||
|---|---|---|---|
|
#18+
Пользуясь скриптами crosstool я собрал под Cygwin два кросс компилятора gcc-4.1.1 и 4.2.0 20061024 (prerelease) для архитектуры Sparc: $ ./sparc-unknown-linux-gnu-gcc -v Using built-in specs. Target: sparc-unknown-linux-gnu Configured with: /crosstool-0.43/build/sparc-unknown-linux-gnu/gcc-4.1.1-glibc-2.3.6/gcc-4.1.1/configure --target=sparc-unknown-linux-gnu --host=i686-host_pc-cygwin --prefix=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu --with-headers=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu/sparc-unknown-linux-gnu/include --with-local-prefix=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu/sparc-unknown-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix gcc version 4.1.1 и $ ./sparc-unknown-linux-gnu-gcc -v Using built-in specs. Target: sparc-unknown-linux-gnu Configured with: /crosstool-0.43/build/sparc-unknown-linux-gnu/gcc-4.2-20061024- glibc-2.3.6/gcc-4.2-20061024/configure --target=sparc-unknown-linux-gnu --host=i 686-host_pc-cygwin --prefix=/opt/crosstool/gcc-4.2-20061024-glibc-2.3.6/sparc-un known-linux-gnu --with-headers=/opt/crosstool/gcc-4.2-20061024-glibc-2.3.6/sparc -unknown-linux-gnu/sparc-unknown-linux-gnu/include --with-local-prefix=/opt/cros stool/gcc-4.2-20061024-glibc-2.3.6/sparc-unknown-linux-gnu/sparc-unknown-linux-g nu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atex it --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix gcc version 4.2.0 20061024 (prerelease) Мне необходимо, чтобы в программе можно было использовать функцию __sync_val_compare_and_swap, относящуюсь к Atomic-Builtins, поддержка которых, согласно http://gcc.gnu.org, включена с версии gcc 4.1.* Я пробую скомпилировать простенький 'Hello World": long cmpxchg( long* value, long comp_val, long new_val ) { return __sync_val_compare_and_swap( value, comp_val, new_val ); } int main() { return 0; } При компиляции выдаётся ошибка (на обоих компиляторах): $ ./sparc-unknown-linux-gnu-gcc test_cas.c -o test_cas /tmp/ccREXHsP.o: In function `cmpxchg': test_cas.c:(.text+0x24): undefined reference to `__sync_val_compare_and_swap_4' collect2: ld returned 1 exit status Я пробовал искать функцию __sync_val_compare_and_swap: $ nm -A *.so | grep __sync_val_compare_and_swap_4 nm: libc.so: File format not recognized nm: libpthread.so: File format not recognized Пробовал компилировать __sync_val_compare_and_swap_4 с -lpthread, всё равно тоже самое. В чём может быть ошибка/проблема? Может ли быть такое, что компиляторы как-то криво был собран мною (я в этом деле совсем новичок, тонкостей совсем не знаю). Может быть архитектура не поддерживает? Пробовал компилировать другие свои программы на C, нормально всё компилится и работает, т.е. вроде как компилятор нормально собран. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2012, 14:18 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=72&tid=1342428]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 397ms |

| 0 / 0 |
