Страниц: 1 2 3 [4]
  Печать  
Автор Тема: GCC 4.x в QNX  (Прочитано 46993 раз)
devbrain
Участник
*
Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #45 : Мая 05, 2009, 04:46:18 pm »

Работаю в 6.4.0

Using built-in specs.
Target: i386-pc-nto-qnx6.4.0
Configured with: ../configure --srcdir=.. --enable-cheaders=c --with-as=/usr/qnx641/host/qnx6/x86/usr
bin/ntox86-as-2.19 --with-ld=/usr/qnx641/host/qnx6/x86/usr/bin/ntox86-ld-2.19 --with-sysroot=/usr/qnx
41/target/qnx6/ --disable-werror --libdir=/usr/qnx641/host/qnx6/x86/usr/lib --libexecdir=/usr/qnx641/
ost/qnx6/x86/usr/lib --target=i386-pc-nto-qnx6.4.0 --srcdir=/src/gcc-4.4.0/nto-x86-o-ntox86/.. --pref
x=/usr/qnx641/host/qnx6/x86/usr --exec-prefix=/usr/qnx641/host/qnx6/x86/usr --with-local-prefix=/usr/
nx641/host/qnx6/x86/usr --enable-languages=c,c++,ada,fortran,objc --enable-threads=posix --enable-lib
da --disable-nls --enable-libssp --disable-tls --enable-libgomp --enable-libffi --enable-libmudflap -
enable-__cxa_atexit --with-gxx-include-dir=/usr/qnx641/target/qnx6/usr/include/c++/4.4.0 --enable-mul
ilib --with-bugurl=http://www.qnx.com --with-included-gettext --program-suffix=-4.4.0 --enable-versio
-specific-runtime-libs --enable-shared CC=i386-pc-nto-qnx6.4.0-gcc CPPFLAGS=' -I/usr/qnx641/target/qn
6/usr/include' LDFLAGS='-Wl,-s ' CXX=i386-pc-nto-qnx6.4.0-g++ AUTOMAKE=: AUTOCONF=: AUTOHEADER=: AUTO
ECONF=: ACLOCAL=:
Thread model: posix
gcc version 4.4.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-c' '-mtune=i386'
 /usr/local/bin/../lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/f951 t_dis.f90 -quiet -dumpbase t_dis.f90 -mtun
=i386 -auxbase t_dis -version -fintrinsic-modules-path /usr/local/bin/../lib/gcc/i386-pc-nto-qnx6.4.0
4.4.0/finclude -o /tmp/ccbwolsf.s
unknown symbol: _Unwind_Resume
unknown symbol: _ZNKSt5ctypeIcE13_M_widen_initEv
unknown symbol: _Unwind_Resume
unknown symbol: _ZNKSt5ctypeIcE13_M_widen_initEv
unknown symbol: _Unwind_Resume
unknown symbol: _ZNKSt5ctypeIcE13_M_widen_initEv
unknown symbol: _Unwind_Resume_or_Rethrow
unknown symbol: _Unwind_RaiseException
unknown symbol: _Unwind_GetLanguageSpecificData
unknown symbol: _Unwind_Resume
unknown symbol: _Unwind_DeleteException
unknown symbol: _Unwind_GetTextRelBase
unknown symbol: _Unwind_SetIP
unknown symbol: _Unwind_GetDataRelBase
unknown symbol: _Unwind_GetRegionStart
unknown symbol: _Unwind_SetGR
unknown symbol: _Unwind_GetIPInfo
Could not resolve all symbols

Похоже на библиотеку libunwind в gcc есть даже опция --with-system-libunwind 
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #46 : Мая 05, 2009, 05:15:09 pm »

a szto pokazywaet:
ldd /usr/local/lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/f951
i
objdump -p /usr/local/lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/f951

U mienia takich problem nie bylo i poetomu nie proeierial kakie biblioteki nuz ny dla f951
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #47 : Мая 05, 2009, 05:26:32 pm »

I eszio odno devbrain ty probowal pri kompilacii dobawit priamyj put k bibliotekie libunwind
tipa gfortran -v -L/lib ........
I ty probowal kompilirowat sztoto w iazykie C hotiaby hello.c ?
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #48 : Мая 06, 2009, 02:56:33 am »

Проблема возникаеть из за этого что компилятор фортрана f951 тепер использует библетеку
libstdc++.so.6
# objdump -p ./f951

./f951:     file format elf32-i386
....................................
Dynamic Section:
  NEEDED      libstdc++.so.6
  NEEDED      libppl_c.so.3
  NEEDED      libppl.so.8
  NEEDED      libgmpxx.so.4
  NEEDED      libmpfr.so.3
  NEEDED      libgmp.so.3
  NEEDED      libc.so.3
  INIT        0x804af5c
ldd показываеть где f951 исщет libstdc++.so.6:
# ldd f951
./f951:
        libstdc++.so.6 => /lib/libstdc++.so.6 (0xb8200000)
        libppl_c.so.3 => /usr/local/lib/libppl_c.so.3 (0xb8310000)
        libppl.so.8 => /usr/local/lib/libppl.so.8 (0xb8568000)
        libgmpxx.so.4 => /usr/local/lib/libgmpxx.so.4 (0xb8615000)
        libmpfr.so.3 => /usr/local/lib/libmpfr.so.3 (0xb8619000)
        libgmp.so.3 => /usr/local/lib/libgmp.so.3 (0xb8663000)
        libm.so.2 => /lib/libm.so.2 (0xb86b5000)
        libc.so.3 => /usr/lib/ldqnx.so.2 (0xb0300000)
Как видно беруться /lib/libstdc++.so.6.
Я не очень понимаю почему эту библетеку поместили в каталог /lib
К стати почти такие самые ошибки я представил на моем сайте описывая проблемы с работой
програм в с++.
И эти :
unknown symbol: _Unwind_Resume
unknown symbol: _ZNKSt5ctypeIcE13_M_widen_initEv
unknown symbol: _Unwind_Resume_or_Rethrow
unknown symbol: _Unwind_RaiseException
unknown symbol: _Unwind_GetLanguageSpecificData
unknown symbol: _Unwind_DeleteException
unknown symbol: _Unwind_GetTextRelBase
unknown symbol: _Unwind_SetIP
unknown symbol: _Unwind_GetRegionStart
unknown symbol: _Unwind_SetGR
unknown symbol: _Unwind_GetIPInfo
находяться в библетеке libstdc++.so.6.0.11 из компилятора 4.4.0
Я не обратил на это внимания потому, что у меня в /lib эсть:
# cd /lib; ls -l | grep libstdc++
lrwxrwxrwx  1 root      root             19 Apr 22 11:38 libstdc++.so -> libstdc++.so.6.0.11
lrwxrwxrwx  1 root      root             18 Dec 28 14:32 libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxrwxr-x  1 root      root         566974 Jun 27  2008 libstdc++.so.5.0.7
lrwxrwxrwx  1 root      root             19 Apr 22 11:38 libstdc++.so.6 -> libstdc++.so.6.0.11
-rwxr-xr-x  1 root      root        4532613 Apr 24 02:22 libstdc++.so.6.0.11
-rwxr-xr-x  1 root      root        4469420 Oct 21  2008 libstdc++.so.6.0.9
#
devbrain у тебя наверно эсть libstdc++.so.6 -> libstdc++.so.6.0.9
Так что предлагаю или сделать так как я сделал (ibstdc++.so.6 -> libstdc++.so.6.0.11) но надо имет в виду что могуть возникать проблемы в работе с с++ используа другие компиляторы чем с++-4.4.0
Самый простый выход то сначяла сделать LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
а потом просто компилировать. Измененный LD_LIBRARY_PATH будеть только в этой сесии терминала в которой мы выполнили LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
И так к примеру:
# pwd
/root
# cd Fortran/
# LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# gfortran -v -fcray-pointer -c t_prg.f90
#
или даже проще:
# LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH; gfortran -v -fcray-pointer -c t_prg.f90
#
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #49 : Мая 06, 2009, 02:30:39 pm »

То что я до сих пор писал относилось к работе gcc4.4.0 в QNX 6.4.0.
В QNX 6.4.1 картина другая. Так как в 6.4.1 базовый компилятор это gcc4.3.3
И вкаталоге /lib имеем:
libstdc++.so.6 -> libstdc++.so.6.0.10
а в libstdc++.so.6.0.10 уже все эти символы _ZNKSt5ctypeIcE13_M_widen_initEv, _Unwind_Resume,
_Unwind_Resume_or_Rethrow и остальные.
Так что gfortran -v -fcray-pointer -c t_prg.f90 работаеть без проблем. По крайней мере в этом примере. Думаю что devbrain могбы наверно это проверить. Я фортраном не занимаюсь.
И еще на счет работы в c++/g++-4.4.0
В QNX 6.4.0 опять возникають проблемы с libstdc++.so.6
Возмем простой пример:
pr4.cc
...........................
#include <iostream>

main( void )
{
   std::cout << "a line of text" << std::endl;
   //   cout << "Hello ..............";
}
..........................
# g++ -o pr4 pr4.cc
# ldd pr4
./pr4:
        libstdc++.so.6 => /lib/libstdc++.so.6 (0xb8200000)
        libm.so.2 => /lib/libm.so.2 (0xb82e6000)
        libc.so.3 => /usr/lib/ldqnx.so.2 (0xb0300000)

И из libstdc++.so.6 => /lib/libstdc++.so.6 (0xb8200000) видно что поведение программы зависит
от того что собой представляет /lib/libstdc++.so.6 а прежде всего от какой версии gcc[ она происходить.
Для gcc4.4.0 это должна быть библетека libstdc++.so.6.0.11 и поэтому если
/lib/libstdc++.so.6 будеть указывать на libstdc++.so.6.0.11 то для g++-4.4.0 все будеть
работать правильно.
Эсть еще одна возможность чтобы самая программа находила правильную библетеку.
Делаем это исползуя -Wl,-rpath=/usr/local/lib во времия компилации:
# g++ -o pr4 -Wl,-rpath=/usr/local/lib pr4.cc
и получаем:
# ldd pr4
./pr4:
        libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0xb8200000)
        libm.so.2 => /lib/libm.so.2 (0xb831a000)
        libc.so.3 => /usr/lib/ldqnx.so.2 (0xb0300000)
и тепер libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 а /usr/local/lib/libstdc++.so.6 указывает на libstdc++.so.6.0.11
и еще посмотрите на
# objdump -p pr4

pr4:     file format elf32-i386

Program Header:
    PHDR off    0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2
         filesz 0x000000c0 memsz 0x000000c0 flags r-x
  INTERP off    0x000000f4 vaddr 0x080480f4 paddr 0x080480f4 align 2**0
         filesz 0x00000014 memsz 0x00000014 flags r--
    LOAD off    0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12
         filesz 0x00000cc4 memsz 0x00000cc4 flags r-x
    LOAD off    0x00000cc4 vaddr 0x08049cc4 paddr 0x08049cc4 align 2**12
         filesz 0x00000140 memsz 0x0000022c flags rw-
 DYNAMIC off    0x00000cdc vaddr 0x08049cdc paddr 0x08049cdc align 2**2
         filesz 0x000000c8 memsz 0x000000c8 flags rw-
    NOTE off    0x00000108 vaddr 0x08048108 paddr 0x08048108 align 2**0
         filesz 0x00000018 memsz 0x00000018 flags r--

Dynamic Section:
  NEEDED      libstdc++.so.6
  NEEDED      libm.so.2
  NEEDED      libc.so.3
  RPATH       /usr/local/lib
  INIT        0x8048640
  FINI        0x8048bd8
  HASH        0x8048120
  STRTAB      0x80483b0
RPATH       /usr/local/lib как раз решаеть проблему
Записан
devbrain
Участник
*
Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #50 : Мая 06, 2009, 05:47:12 pm »

Проблема с символами решилась, но осталась изначальная.
f951: internal compiler error: illegal instruction
Поставил библиотеки и gcc на чистую систему 6.4.1, сишный исходник gcc собирается нормально, а с gfortran нет Sad
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #51 : Мая 06, 2009, 08:53:46 pm »

Ty imeesz w widu szto postawil gcc4.4.0 ?
Oszybku wydaiot toze samaia programma kotoruiu ty mnie prislal ?
Записан
devbrain
Участник
*
Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #52 : Мая 06, 2009, 10:54:45 pm »

Да gcc4.4.0 и с примером, который тебе высылал
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #53 : Мая 07, 2009, 01:59:44 am »

А вот у меня никакие проблемы не возникають. И так по точнее.
У меня самая последняя верся QNX 6.4.1
# uname -a
QNX localhost 6.4.1 2009/04/18-00:39:07EDT x86pc x86
#
gcc 4.4.0 и gfortran-4.4.0 и только эти версии. Эстестьвенно нативный gcc4.3.3 тоже есть.
# cd /usr
# find -name f951
./local/lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/f951
# cd local/lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0
# ls -l | grep f9
-rwxr-xr-x  1 root      root        7374224 Apr 28 21:07 f951
#
# ./f951 --version
GNU Fortran (GCC) version 4.4.0 (i386-pc-nto-qnx6.4.0)
        compiled by GNU C version 4.4.0, GMP version 4.3, MPFR version 2.4.1.
warning: GMP header version 4.3 differs from library version 4.3.0.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

и тепер компиляция

# cd /root/Fortran
# ls -l
total 48
drwxrwxrwx  2 root     root           1024 May 07 00:40 .
drwx------ 14 root     root           1024 May 06 12:00 ..
-rw-rw-r--  1 root      root           2314 May 05 00:23 common_data
-rw-rw-r--  1 root      root           3917 May 05 00:22 t_prg.f90
# gfortran -v -fcray-pointer -c t_prg.f90 2>&1 | tee CC.log
# ls -l
total 48
drwxrwxrwx  2 root     root           1024 May 07 00:41 .
drwx------ 14 root     root           1024 May 06 12:00 ..
-rw-rw-r--  1 root      root           2375 May 07 00:41 CC.log
-rw-rw-r--  1 root      root           2314 May 05 00:23 common_data
-rw-rw-r--  1 root      root           3917 May 05 00:22 t_prg.f90
-rw-rw-r--  1 root      root           6964 May 07 00:41 t_prg.o
#

А вот CC.log:
Using built-in specs.
Target: i386-pc-nto-qnx6.4.0
Configured with: ../configure --srcdir=.. --enable-cheaders=c
--with-as=/usr/qnx641/host/qnx6/x86/usr/bin/ntox86-as-2.19
--with-ld=/usr/qnx641/host/qnx6/x86/usr/bin/ntox86-ld-2.19
--with-sysroot=/usr/qnx641/target/qnx6/ --disable-werror
--libdir=/usr/qnx641/host/qnx6/x86/usr/lib
--libexecdir=/usr/qnx641/host/qnx6/x86/usr/lib
--target=i386-pc-nto-qnx6.4.0
--srcdir=/src/gcc-4.4.0/nto-x86-o-ntox86/..
--prefix=/usr/qnx641/host/qnx6/x86/usr
--exec-prefix=/usr/qnx641/host/qnx6/x86/usr
--with-local-prefix=/usr/qnx641/host/qnx6/x86/usr
--enable-languages=c,c++,ada,fortran,objc
--enable-threads=posix
--enable-libada
--disable-nls
--enable-libssp
--disable-tls
--enable-libgomp
--enable-libffi
--enable-libmudflap
--enable-__cxa_atexit
--with-gxx-include-dir=/usr/qnx641/target/qnx6/usr/include/c++/4.4.0
--enable-multilib
--with-bugurl=http://www.qnx.com
--with-included-gettext --program-suffix=-4.4.0
--enable-version-specific-runtime-libs --enable-shared
CC=i386-pc-nto-qnx6.4.0-gcc
CPPFLAGS=' -I/usr/qnx641/target/qnx6/usr/include'
LDFLAGS='-Wl,-s '
CXX=i386-pc-nto-qnx6.4.0-g++
 AUTOMAKE=: AUTOCONF=: AUTOHEADER=: AUTORECONF=: ACLOCAL=:
Thread model: posix
gcc version 4.4.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-fcray-pointer' '-c' '-mtune=i386'
 /usr/local/bin/../lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/f951 t_prg.f90 -quiet -dumpbase t_prg.f90
 -mtune=i386 -auxbase t_prg -version -fcray-pointer
 -fintrinsic-modules-path /usr/local/bin/../lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/finclude -o /tmp/ccCeszkJ.s
GNU Fortran (GCC) version 4.4.0 (i386-pc-nto-qnx6.4.0)
   compiled by GNU C version 4.4.0, GMP version 4.3, MPFR version 2.4.1.
warning: GMP header version 4.3 differs from library version 4.3.0.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
COLLECT_GCC_OPTIONS='-v' '-fcray-pointer' '-c' '-mtune=i386'
 /usr/qnx641/host/qnx6/x86/usr/bin/ntox86-as-2.19 -v -V -Qy -o t_prg.o /tmp/ccCeszkJ.s
GNU assembler version 2.19.1 (i386-pc-nto-qnx6.4.0) using BFD version (GNU Binutils) 2.19.1
COMPILER_PATH=/usr/qnx641/host/qnx6/x86/usr/bin/:
              /usr/local/bin/../lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/:
              /usr/local/bin/../lib/gcc/
LIBRARY_PATH=/usr/local/bin/../lib/gcc/i386-pc-nto-qnx6.4.0/4.4.0/:
             /usr/local/bin/../lib/gcc/:
             /usr/qnx641/target/qnx6//usr/lib/
COLLECT_GCC_OPTIONS='-v' '-fcray-pointer' '-c' '-mtune=i386'
=====================================================
devbrain посмотри у тебя есть какие то отличя ?
Хотя подожди какая у тебя машина ?
У меня Intel Core2 Quad 2.40 GHz ия GMP и MPFR компилировал на свою машину.
И они компилировались при следуюших установках
CC=gcc-4.4.0, CFLAGS=-m32 -O2 -fomit-frame-pointer -mtune=core2 -march=core2
Компилятор языка фортран в болшей степени используеть  GMP и MPFR  чем остальные
компиляторы. Так что я скомпилирую эти библетеки используя -mtune=i386.
К стати devbrain ты сам это можеш сделать и тогда будеш имеет эти библетеки
под свою машину. Во время ./configure процесс выбора птималь ных параметров происходить
автоматически если конешно не заставиш чтоьы компилировать на определенную платформу.
Записан
devbrain
Участник
*
Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #54 : Мая 08, 2009, 11:55:41 am »

Собрал mpf и gmp под свою платформу и все заработало.
Спасибо!
Записан
Страниц: 1 2 3 [4]
  Печать  
 
Перейти в: