Montavista GCC Linker бросает `не может найти -lgcc_s`Linux

Ответить
Anonymous
 Montavista GCC Linker бросает `не может найти -lgcc_s`

Сообщение Anonymous »

У меня есть задача по контейнерированию древнего встроенного плана сборки, в котором используется инструмент инструментов Montavista GCC, выпущенный в 2006 году. К сожалению, старший настаивает на использовании настройки, похожей на старый сервер сборки. По сути, у меня есть контейнер с базовым контейнером Windows Server 2025, запускающий старый инструмент, используя Cygwin (я использую текущую версию). < /P>
Мне удалось заставить фазу компиляции для работы, однако я уже давно боролся с линкером. При запуске команды mips_fp_be -g ++ -shared -wl, -soname, libscl.so.3 -o libscl.so.3.2.1 dbg/*. O api/*. O warpper/*. O сокет/*. O
Для справки, переменные среды показаны ниже: < /p>
env

PWD=/cygdrive/c/jenkins/workspace/xyz_master/libscl
PATH=/usr/bin:/cygdrive/c/MontaVista/opt/montavista/pro/host/bin:/cygdrive/c/MontaVista/opt/montavista/pro/devkit/mips/fp_be/bin:/cygdrive/c/MontaVista/opt/montavista/comm:/cygdrive/c/MontaVista/bin
CC=mips_fp_be-g++
# output omitted
< /code>
Одна вещь, которую нужно отметить, это то, что мне пришлось немного настроить программы, доступные на пути, так что можно было вызвать инструмент Montavista GCC. Были необходимы изменения, внесенные командами внутри контейнеровочного файла [/code]. По сути, эти инструкции гарантируют, что инструмент Montevista MIPS называется первым в пути. PrettyPrint-Override ">

Код: Выделить всё

RUN powershell -Command \
Expand-Archive -Path "C:\\MontaVista.zip" -DestinationPath "C:\\"; \
Remove-Item -Force "C:\\MontaVista.zip"
RUN del C:\MontaVista\opt\montavista\pro\devkit\mips\fp_be\target\usr\include\asm.lnk \
&& mklink C:\MontaVista\opt\montavista\pro\devkit\mips\fp_be\target\usr\include\asm C:\MontaVista\opt\montavista\pro\devkit\mips\fp_be\target\usr\include\asm-mips \
&& move C:\MontaVista\bin\as.exe C:\MontaVista\bin\as_backup.exe \
&& mklink C:\MontaVista\bin\as.exe C:\MontaVista\opt\montavista\pro\devkit\mips\fp_be\bin\mips_fp_be-as.exe \
&& move C:\MontaVista\bin\ld.exe C:\MontaVista\bin\ld_backup.exe \
&& mklink C:\MontaVista\opt\montavista\pro\devkit\mips\fp_be\bin\ld.exe C:\MontaVista\opt\montavista\pro\devkit\mips\fp_be\bin\mips_fp_be-ld.exe
< /code>
Однако я подозреваю, что инструменты (as
, ld , collect2 и т. Д.) загружаются из неправильного места. Я нашел пакетный скрипт, который объединяет часть набора инструментов в USR/bin и/usr/lib внутри установки Cygwin; Эти каталоги являются первыми ссылками с переменной среды $ path и путем поиска линкера. В настоящее время я пытаюсь выяснить, какой каталог подставьте под пути, чтобы инструменты были правильно загружены. Скрипт показан ниже: < /p>

Код: Выделить всё

@Echo Off

:: cygwin.cmd               doru.carastan@mvista.com
::
:: Starts the Cygwin bash or sets a proper Cygwin mount table.
::
:: Command options:
::  [-w]   Starts the Cygwin bash shell or
::  -m     (re)builds the default Cygwin mount table
::  -v     verbose
::
:: Changes:
::   2003/11/11 - Peter Rehley 
::     - Removed start items.  Just call bash directly.
::       Prevents two dos prompts from showing.
::     - Also turn echo on when -v is used.  It was off
::   2003/12/15 - Doru Carastan 
::     - Double quoted the CYGWIN_ROOT variable.
::     - Show root path in window title.

if "%1" == "-v" shift & echo on

::for /f "delims=" %%p in ('bin\cygpath -a -w /') do set CYGWIN_ROOT=%%p
set HOME=C:\MontaVista
set CYGWIN_ROOT=C:\MontaVista

if "%1" == "-m" goto MOUNT

set CYGWIN=codepage:oem

title BASH Shell   ---   '%CYGWIN_ROOT%' mounted as /
"%CYGWIN_ROOT%\bin\bash.exe" --login -i
goto EOF
exit %ERRORLEVEL%

:MOUNT

echo Setting Cygwin mount table based on %CYGWIN_ROOT% ...

pushd "%CYGWIN_ROOT%\bin"

"%CYGWIN_ROOT%\bin\umount.exe" -A
"%CYGWIN_ROOT%\bin\mount.exe" -f -s -b "%CYGWIN_ROOT%\bin" "/usr/bin"
"%CYGWIN_ROOT%\bin\mount.exe" -f -s -b "%CYGWIN_ROOT%\lib" "/usr/lib"
"%CYGWIN_ROOT%\bin\mount.exe" -f -s -b "%CYGWIN_ROOT%" "/"
"%CYGWIN_ROOT%\bin\mount.exe" -s -b --change-cygdrive-prefix "/cygdrive"
"%CYGWIN_ROOT%\bin\mount.exe"

popd

:EOF
My guess is that either one of the directories /cygdrive/c/MontaVista/opt/montavista/pro/devkit/mips/fp_be/bin or /cygdrive/c/MontaVista/opt/montavista/pro/devkit/mips/fp_be/mips-hardhat-linux/bin Содержит правильные двоичные файлы.
На фрагменте ниже показан список каталога LS-Al/Cygdrive/C/Montavista/Opt/Montavista/Pro/devkit/mips/fp_be/bin :
:
ls -al /cygdrive/c/MontaVista/opt/montavista/pro/devkit/mips/fp_be/bin

total 0
drwxr-xr-x 2 Administ Kein 4096 Jul 31 15:51 .
drwxr-xr-x 15 Administ Kein 0 Jul 31 16:04 ..
-rwxr-xr-x 1 Administ Kein 25018 Apr 30 2006 apxs
-rwxr-xr-x 1 Administ Kein 1917 Jan 14 2004 glib-config
-rwxr-xr-x 1 Administ Kein 2676098 Apr 16 2006 mips_fp_be-addr2line.exe
-rwxr-xr-x 1 Administ Kein 2584605 Apr 16 2006 mips_fp_be-ar.exe
-rwxr-xr-x 1 Administ Kein 3465718 Apr 16 2006 mips_fp_be-as.exe
-rwxr-xr-x 1 Administ Kein 2699561 Apr 16 2006 mips_fp_be-c++filt.exe
-rwxr-xr-x 1 Administ Kein 903226 Apr 30 2006 mips_fp_be-cpp.exe
-rwxr-xr-x 1 Administ Kein 8760 Feb 6 2006 mips_fp_be-e2fs_install
-rwxr-xr-x 1 Administ Kein 904216 Apr 30 2006 mips_fp_be-g++.exe
-rwxr-xr-x 1 Administ Kein 901144 Apr 30 2006 mips_fp_be-gcc.exe
-rwxr-xr-x 1 Administ Kein 766813 Apr 30 2006 mips_fp_be-gcov.exe
-rwxr-xr-x 1 Administ Kein 8658973 Feb 6 2006 mips_fp_be-gdb.exe
-rwxr-xr-x 1 Administ Kein 2870275 Apr 16 2006 mips_fp_be-gprof.exe
-rwxr-xr-x 1 Administ Kein 630959 Dec 24 2003 mips_fp_be-initdconfig.exe
-rwxr-xr-x 1 Administ Kein 2488675 Dec 24 2003 mips_fp_be-ksymoops.exe
-rwxr-xr-x 1 Administ Kein 3258783 Apr 16 2006 mips_fp_be-ld.exe
-rwxr-xr-x 1 Administ Kein 6922 May 7 2004 mips_fp_be-libindex
-rwxr-xr-x 1 Administ Kein 15610 May 7 2004 mips_fp_be-libopt
-rwxr-xr-x 1 Administ Kein 8213 Dec 24 2003 mips_fp_be-libtoolize
-rwxr-xr-x 1 Administ Kein 2720814 Apr 16 2006 mips_fp_be-nm.exe
-rwxr-xr-x 1 Administ Kein 3093750 Apr 16 2006 mips_fp_be-objcopy.exe
-rwxr-xr-x 1 Administ Kein 3195519 Apr 16 2006 mips_fp_be-objdump.exe
-rwxr-xr-x 1 Administ Kein 2587165 Apr 16 2006 mips_fp_be-ranlib.exe
-rwxr-xr-x 1 Administ Kein 1196401 Apr 16 2006 mips_fp_be-readelf.exe
-rwxr-xr-x 1 Administ Kein 630959 Dec 24 2003 mips_fp_be-shellconfig.exe
-rwxr-xr-x 1 Administ Kein 2539522 Apr 16 2006 mips_fp_be-size.exe
-rwxr-xr-x 1 Administ Kein 2573054 Apr 16 2006 mips_fp_be-strings.exe
-rwxr-xr-x 1 Administ Kein 3093750 Apr 16 2006 mips_fp_be-strip.exe

Наконец, фрагмент ниже отображает вывод LS-Al/CygDrive/C/Montavista/Opt/Montavista/Pro/devkit/mips/fp_be/mips-hardhat-linux/bin :
:
ls -al /cygdrive/c/MontaVista/opt/montavista/pro/devkit/mips/fp_be/mips-hardhat-linux/bin

drwxr-xr-x 2 Administ Kein 4096 Jul 31 15:52 .
drwxr-xr-x 5 Administ Kein 0 Jul 31 15:52 ..
-rw-r--r-- 1 Administ Kein 134 Jul 11 2006 ar.exe.lnk
-rw-r--r-- 1 Administ Kein 134 Jul 11 2006 as.exe.lnk
-rw-r--r-- 1 Administ Kein 136 Jul 11 2006 cpp.exe.lnk
-rw-r--r-- 1 Administ Kein 136 Jul 11 2006 g++.exe.lnk
-rw-r--r-- 1 Administ Kein 136 Jul 11 2006 gcc.exe.lnk
-rw-r--r-- 1 Administ Kein 138 Jul 11 2006 gcov.exe.lnk
-rw-r--r-- 1 Administ Kein 96 Jul 11 2006 gnm.exe.lnk
-rw-r--r-- 1 Administ Kein 102 Jul 11 2006 gstrip.exe.lnk
-rw-r--r-- 1 Administ Kein 134 Jul 11 2006 ld.exe.lnk
-rw-r--r-- 1 Administ Kein 134 Jul 11 2006 nm.exe.lnk
-rw-r--r-- 1 Administ Kein 142 Jul 11 2006 ranlib.exe.lnk
-rw-r--r-- 1 Administ Kein 140 Jul 11 2006 strip.exe.lnk

Как я могу убедиться, что/usr/bin и/usr/lib указывать на правильные каталоги для Cross Compile Chanseman? Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий. Спасибо за вашу помощь.


Подробнее здесь: https://stackoverflow.com/questions/797 ... ind-lgcc-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»