Здравствуйте!
Возвращаюсь к своей любимой теме :-)
Ситуация:
Есть проограмма на Ada - не важно, что в ней Есть кросс-компиллер для ARM, к примеру Исходники лежат в src, объектники в obj и исполняемый в elf
Вручную всё собирается с помощью таких команд:
arm-linux-gnueabihf-gcc-5 -c ./src/hello.adb -o ./bin/hello.o
arm-linux-gnueabihf-gnatbind ./bin/hello.ali
arm-linux-gnueabihf-gnatlink ./bin/hello.ali -o ./elf/hello
Однако это как-то скучно будет для большого проекта. Написал крохотный файл проекта:
project Ada_First is
for Target use "arm-linux-gnueabihf";
for Languages use ("Ada");
for Source_Dirs use ("src");
for Object_Dir use "./bin";
for Exec_Dir use "elf";
for Main use ("main.adb");
end Ada_First;
Однако, gnatmake никак не реагирует на строку
for Target use "arm-linux-gnueabihf";
Просто создаёт ELF для х86_64. Если же задаю этот параметр в командной строке:
gnatmake --target=arm-linux-gnueabihf -P ada_first.gpr
говорит, что нелегальный ключ.
Хорошо, тогда попытался использовать gprbuild. Сначала, с помощью gprconfig создал файд cgpr.
Утилиту gprconfig вызывал с ключом --target=arm-linux-gnueabihf и хотя утилита, вроде-бы находила кросс-тулзы, но в файле cgrp не было ни малейшего упоминания о языке Ada, только - C. Я руками дописал строки, которые мне показались разумными. В результате получилось вот что:
-- This gpr configuration file was generated by gprconfig
-- using this command line:
-- gprconfig --target=arm-linux-gnueabihf --config=Ada
configuration project Default is
for Target use "arm-linux-gnueabihf";
for Archive_Builder use ("ar", "cr");
for Archive_Builder_Append_Option use ("q");
for Archive_Indexer use ("ranlib");
for Archive_Suffix use ".a";
for Library_Builder use "/usr/lib/gprbuild/gprlib";
for Library_Support use "full";
-- for Shared_Library_Prefix use "/usr/arm-linux-gnueabihf/sysroot/usr/lib";
for Shared_Library_Prefix use "lib";
for Symbolic_Link_Supported use "true";
for Library_Major_Minor_Id_Supported use "true";
for Shared_Library_Minimum_Switches use ("-shared");
for Library_Version_Switches use ("-Wl,-soname,");
for Shared_Library_Suffix use ".so";
for Library_Auto_Init_Supported use "true";
for Run_Path_Option use ("-Wl,-z,origin,-rpath,");
for Run_Path_Origin use "$ORIGIN";
for Library_Encapsulated_Options use ("-shared", "-static-libgcc"); for Library_Partial_Linker use ("arm-linux-gnueabi-gcc", "-nostdlib", "-Wl,-r", "-o");
for Default_Language use "C";
package Builder is
for Executable_Suffix use "";
end Builder;
package Compiler is
for Driver ("C") use "/usr/bin/arm-linux-gnueabi-gcc"; for Leading_Required_Switches ("C") use
("-c", "-x", "c") & Compiler'Leading_Required_Switches ("C"); for Driver ("Ada") use "/usr/bin/arm-linux-gnueabi-gcc"; for Leading_Required_Switches ("Ada") use
("-c") & Compiler'Leading_Required_Switches ("Ada");
for Include_Path ("C") use "CPATH";
for Include_Path ("Ada") use "ADAPATH";
for Dependency_Switches ("C") use ("-MMD", "-MF", "");
for PIC_Option ("C") use ("-fPIC");
end Compiler;
package Naming is
for Spec_Suffix ("C") use ".h";
for Body_Suffix ("C") use ".c";
for Spec_Suffix ("Ada") use ".ads";
for Body_Suffix ("Ada") use ".adb";
end Naming;
package Linker is
for Map_File_Option use "-Wl,-Map,";
for Driver use Compiler'Driver ("C");
end Linker;
package Clean is
-- Remove the files generated by gnatinspect (in the context of GPS) for Artifacts_In_Object_Dir use Clean'Artifacts_In_Object_Dir & ("gnatinspect.*");
for Source_Artifact_Extensions ("C") use (".gli");
for Object_Artifact_Extensions ("C") use (".s", "ci", ".gcno"); end Clean;
end Default;
Теперь, если запустить так:
gprbuild -P ada_first.gpr
то запускается кросс-компилляция. И успешно проходит - создаются файлы *.ali и *.o.
А вот линковка падает: не находит библиотек:
function `_start':
(.text+0x28): undefined reference to `main'
main.o: In function `_ada_main':
main.adb:(.text+0x1e): undefined reference to `ada__assertions__assert__2' libada_first.a(hello.o): In function `_ada_hello':
hello.adb:(.text+0x18): undefined reference to `ada__text_io__put_line__2' hello.adb:(.text+0x30): undefined reference to `ada__text_io__put_line__2' collect2: error: ld returned 1 exit status
gprbuild: link of main.adb failed
Я понимаю, что где-то надо задать расположение ARM-овских библиотек, они у меня есть.
Но вот - где и как ?
On 03/28/2017 09:17 AM, sv_lary@fromru.com [ada_ru] wrote:
Однако, gnatmake никак не реагирует на строку
for Target use "arm-linux-gnueabihf";
По секрету: gnatmake вообще не понимает файлы проектов. Забудьте о нём.
Хорошо, тогда попытался использовать gprbuild. Сначала, с помощью gprconfig создал файд cgpr.
Утилиту gprconfig вызывал с ключом --target=arm-linux-gnueabihf и хотя утилита, вроде-бы находила кросс-тулзы, но в файле cgrp не было ни малейшего упоминания о языке Ada, только - C.
Вот это правильный путь. Только имеет смысл добавлять -v и анализировать вывод, что бы подправить базу данных gprbuild или системные пакеты что бы Ada находилась самостоятельно.
Я понимаю, что где-то надо задать расположение ARM-овских библиотек, они у меня есть.
Тогда разбираться почему же gprconfig не находит компилятор Ada. Раскрою ещё один секрет - он наверное как раз и не находит эти библиотеки.
Втр 28 Мар 2017 09:17:49 +0300, sv_lary@fromru.com [ada_ru] <ada_ru@yahoogroups.com> написал:
Здравствуйте!
Возвращаюсь к своей любимой теме :-)
Попробуйте допилить БД gprbuild-а. Это должно быть не сложно. Запускайте gprconfig --target=arm-linux-gnueabihf --config=ada,, -v
и "-v -v" и смотрите, что не находит. Скорее всего просто версия компилятора ему не нравиться.
Может быть полезно посмотреть на это
https://github.com/AdaCore/gprbuild/issues/5#issuecomment-223049206
Если делать руками cgpr, вот что мне выдает gprconfig для GNAT GPL 2016 ARM
-- This gpr configuration file was generated by gprconfig
-- using this command line:
-- gprconfig --batch -o /tmp/aaa/bin/GNAT-TEMP-000001.TMP --target=arm-eabi --config=ada,,
-- from /tmp/aaa
configuration project Default is
for Target use "arm-eabi";
for Toolchain_Version ("Ada") use "GNAT 2016";
for Runtime_Library_Dir ("Ada") use "/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro//adalib/";
for Runtime_Source_Dirs ("Ada") use ("/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro//adainclude/");
for Archive_Builder use ("arm-eabi-ar", "cr");
for Archive_Builder_Append_Option use ("q");
for Archive_Indexer use ("arm-eabi-ranlib");
for Archive_Suffix use ".a";
for Library_Support use "static_only";
for Library_Builder use "/home/max/net/gnat-arm/libexec/gprbuild/gprlib"; for Default_Language use "Ada";
type Loaders is ("ROM", "SAMBA", "USER");
Loader : Loaders := external ("LOADER", "ROM");
package Builder is
for Executable_Suffix use "";
end Builder;
package Compiler is
for Driver ("Ada") use "/home/max/net/gnat-arm/bin/arm-eabi-gcc";
for Language_Kind ("Ada") use "unit_based";
for Dependency_Kind ("Ada") use "ALI_File";
for Leading_Required_Switches ("Ada") use
("-c", "-x", "ada", "-gnatA")
& Compiler'Leading_Required_Switches ("Ada");
for Mapping_File_Switches ("Ada") use ("-gnatem=");
for Mapping_Spec_Suffix ("Ada") use "%s";
for Mapping_Body_Suffix ("Ada") use "%b";
for Config_File_Switches ("Ada") use ("-gnatec=");
for Include_Path_File ("Ada") use "ADA_PRJ_INCLUDE_FILE"; for Multi_Unit_Switches ("Ada") use ("-gnateI");
for Multi_Unit_Object_Separator ("Ada") use "~";
for Config_Body_File_Name ("Ada") use
"pragma Source_File_Name_Project (%u, Body_File_Name => ""%f"");"; for Config_Spec_File_Name ("Ada") use
"pragma Source_File_Name_Project (%u, Spec_File_Name => ""%f"");"; for Config_Body_File_Name_Index ("Ada") use
"pragma Source_File_Name_Project (%u, Body_File_Name => ""%f"", Index => %i);";
for Config_Spec_File_Name_Index ("Ada") use
"pragma Source_File_Name_Project (%u, Spec_File_Name => ""%f"", Index => %i);";
for Config_Body_File_Name_Pattern ("Ada") use
"pragma Source_File_Name_Project " &
" (Body_File_Name => ""*%b""," &
" Casing => %c," &
" Dot_Replacement => ""%d"");";
for Config_Spec_File_Name_Pattern ("Ada") use
"pragma Source_File_Name_Project " &
" (Spec_File_Name => ""*%s""," &
" Casing => %c," &
" Dot_Replacement => ""%d"");";
for Config_File_Unique ("Ada") use "False";
for PIC_Option ("Ada") use ("-fPIC");
for Leading_Required_Switches ("Ada") use
Compiler'Leading_Required_Switches ("Ada") & ("--RTS=/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro/");
Common_Required_Switches := ("-mlittle-endian", "-mhard-float", "-mcpu=cortex-m4", "-mfpu=fpv4-sp-d16", "-mthumb");
for Leading_Required_Switches ("Ada") use
Compiler'Leading_Required_Switches ("Ada") &
Common_Required_Switches;
for Leading_Required_Switches ("C") use
Compiler'Leading_Required_Switches ("C") &
Common_Required_Switches;
end Compiler;
package Naming is
for Spec_Suffix ("Ada") use ".ads";
for Body_Suffix ("Ada") use ".adb";
for Casing use "lowercase";
for Dot_Replacement use "-";
end Naming;
package Binder is
for Required_Switches ("Ada") use
Binder'Required_Switches ("Ada") &
("gnatbind_prefix=arm-eabi-");
for Objects_Path_File ("Ada") use "ADA_PRJ_OBJECTS_FILE"; for Driver ("Ada") use
"/home/max/net/gnat-arm/libexec/gprbuild/gprbind";
for Required_Switches ("Ada") use
Binder'Required_Switches ("Ada") & ("--RTS=/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro/");
end Binder;
package Linker is
for Driver use Compiler'Driver ("Ada");
for Map_File_Option use "-Wl,-Map,";
for Response_File_Format use "GCC_GNU";
for Max_Command_Line_Length use "8192";
for Required_Switches use Linker'Required_Switches &
("-L/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro//adalib", "-nolibc", "-nostartfiles") &
Compiler.Common_Required_Switches;
case Loader is
when "USER" =>
when others =>
for Required_Switches use Linker'Required_Switches &
("-L", "/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro//../bsps/sam4s/bsp/",
"-T", "memory-map.ld",
"-T", "common-" & Loader & ".ld");
end case;
end Linker;
package Clean is
-- Remove the files generated by gnatinspect (in the context of GPS) for Artifacts_In_Object_Dir use Clean'Artifacts_In_Object_Dir & ("gnatinspect.*");
for Source_Artifact_Extensions ("Ada")
use (".dg", ".rep", ".stdout", ".stderr");
for Object_Artifact_Extensions ("Ada") use (".s", ".ci", ".gcno"); end Clean;
end Default;
--
Здравствуйте, Вадим!
gnatmake вообще не понимает файлы проектов.
Ну почему же "вообще"?! На директивы, задающие имена каталогов и т.п. - адекватно реагирует.
> имеет смысл добавлять -v и анализировать вывод,
$ gprconfig -v --target=arm-linux-gnueabihf --config=Ada
Only compilers matching target arm-linux-gnueabihf will be preserved
Попытался проанализировать. Утилита просматривает все каталоги из переменной $PATH и ищет там компилляторы. На каком основании она выбирает компилляторы - я не знаю. Утилита нашла несколько компилляторов в папке /usr/bin и принялась проверять их по каким-то условиям. Из 7 кандидатов отобрала вот этот:
GCC is candidate: filename=arm-linux-gnueabi-gcc
target: executing "arm-linux-gnueabi-gcc -dumpmachine" output=<use -v -v> no match
target: grep matched="arm-linux-gnueabihf"
version: executing "arm-linux-gnueabi-gcc -v" output=<use -v -v> no match version: nogrep no match
version: grep matched="5.4.0"
languages: constant := C
Filter=Ada,,,,: language does not match
Adding compiler to interactive menu C,5.4.0,,/usr/bin/,GCC selected=FALSE
Причём, даже у него: "Filter=Ada,,,,: language does not match". У остальных кандидатов два варианта:
1) Ignore compiler, since couldn't guess its version
2) Target for this compiler does not match --target
В подготовленном файле *.cgpr упоминание об Ada вообще отсутствует. Наприер, в пакете имён файлов:
package Naming is
for Spec_Suffix ("C") use ".h";
for Body_Suffix ("C") use ".c";
end Naming;
И я, ручками, дописывал сюда для Ada по аналогии.
что бы подправить базу данных gprbuild или системные пакеты что
> бы Ada находилась самостоятельно.
Если можно - поподробнее! Что это за база и как её править ?
Здравствуйте, Максим!
Может быть полезно посмотреть на это
На мой взгляд, тут ситуация несколько иная. У TS не собираются ЕГО библиотеки, а у меня - не видны готовые СИСТЕМНЫЕ библиотеки. То, что эти библиотеки есть, доказывается тем фактом, что при ручной сборки, готовый ELF собирается.
Странное дело: если я запускаю конфигуратор так:
gprconfig --batch -o ~/tmp/GNAT-TEMP-000001.TMP --target=arm-linux-gnueabihf --config=Ada,,
То он выдаёт: Error: no matching compiler found for --config=Ada,,,, Причём, компиллятор arm-linux-gnueabi-gcc он проверяет дважды(?) и первый раз выдаёт
сообщение Filter=Ada,,,,: language does not match а второй раз - Ignore compiler, since couldn't guess its version
А если убираю параметр --batch , то конфигурация по умолчанию создаётся, но в ней нет упоминания про Ada.
--
gnatmake вообще не понимает файлы проектов.
Ну почему же "вообще"?!
Если в строке gnatmake присутствует -P, то просто вызывается из-под полы gprbuild и все.
Попытался проанализировать. Утилита просматривает все каталоги из переменной $PATH и ищет там компилляторы. На каком основании она выбирает компилляторы - я не знаю.
См.документацию, файл gprbuild_ug.
Если можно - поподробнее! Что это за база и как её править ?
См. там же.
Здравствуйте, Максим!
вот что мне выдает gprconfig для GNAT GPL 2016 ARM
Я взял за основу Ваш файл настроек и обработал его последовательно тремя инструментами:
рашпилем напильником надфилем
И - о чудо - сборка прошла! Насколько я понял, Вы готовите программу для встроенной системы, без линуха? Там про какое-то run-time окружение говорилось..
Осталось только разобраться, почему у меня Cnat-GPS умирает через 30 секунд работы и можно будет браться за что-то серьёзное...
Если Вам любопытно, то вот прилагаю текст файла настроек, с которым у меня пошла сборка.
Можете натравить на него diff, или meld - сразу всё станет ясно.
-- This gpr configuration file was generated by gprconfig
-- using this command line:
-- gprconfig --batch -o ~/tmp/GNAT-TEMP-000001.tmp --target=arm-linux-gnueabi --config=ada,,
-- from /tmp/aaa
configuration project Default is
for Target use "arm-linux-gnueabihf";
for Toolchain_Version ("Ada") use "GNAT 2016";
for Runtime_Library_Dir ("Ada") use "//usr/lib/gcc-cross/arm-linux-gnueabihf/5/adalib/";
-- for Runtime_Source_Dirs ("Ada") use ("/usr/lib/gcc-cross/arm-linux-gnueabihf/5/adainclude/");
for Archive_Builder use ("arm-linux-gnueabi-ar", "cr");
for Archive_Builder_Append_Option use ("q");
for Archive_Indexer use ("arm-linux-gnueabi-ranlib");
for Archive_Suffix use ".a";
for Library_Support use "static_only";
for Library_Builder use "/usr/lib/gprbuild/gprlib";
for Default_Language use "Ada";
type Loaders is ("ROM", "SAMBA", "USER");
Loader : Loaders := external ("LOADER", "ROM");
package Builder is
for Executable_Suffix use "";
end Builder;
package Compiler is
for Driver ("Ada") use "/usr/bin/arm-linux-gnueabi-gcc";
for Language_Kind ("Ada") use "unit_based";
for Dependency_Kind ("Ada") use "ALI_File";
for Leading_Required_Switches ("Ada") use ("-c", "-x", "ada", "-gnatA") & Compiler'Leading_Required_Switches ("Ada");
for Mapping_File_Switches ("Ada") use ("-gnatem=");
for Mapping_Spec_Suffix ("Ada") use "%s";
for Mapping_Body_Suffix ("Ada") use "%b";
for Config_File_Switches ("Ada") use ("-gnatec=");
for Include_Path_File ("Ada") use "ADA_PRJ_INCLUDE_FILE";
for Multi_Unit_Switches ("Ada") use ("-gnateI");
for Multi_Unit_Object_Separator ("Ada") use "~";
for Config_Body_File_Name ("Ada") use
"pragma Source_File_Name_Project (%u, Body_File_Name => ""%f"");"; for Config_Spec_File_Name ("Ada") use
"pragma Source_File_Name_Project (%u, Spec_File_Name => ""%f"");"; for Config_Body_File_Name_Index ("Ada") use
"pragma Source_File_Name_Project (%u, Body_File_Name => ""%f"", Index => %i);";
for Config_Spec_File_Name_Index ("Ada") use
"pragma Source_File_Name_Project (%u, Spec_File_Name => ""%f"", Index => %i);";
for Config_Body_File_Name_Pattern ("Ada") use
"pragma Source_File_Name_Project " &
" (Body_File_Name => ""*%b""," &
" Casing => %c," &
" Dot_Replacement => ""%d"");";
for Config_Spec_File_Name_Pattern ("Ada") use
"pragma Source_File_Name_Project " &
" (Spec_File_Name => ""*%s""," &
" Casing => %c," &
" Dot_Replacement => ""%d"");";
for Config_File_Unique ("Ada") use "False";
for PIC_Option ("Ada") use ("-fPIC");
-- for Leading_Required_Switches ("Ada") use
-- Compiler'Leading_Required_Switches ("Ada") & ("--RTS=/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro/");
-- Common_Required_Switches := ("-mlittle-endian", "-mhard-float", --- "-mcpu=cortex-m4", "-mfpu=fpv4-sp-d16", "-mthumb");
-- for Leading_Required_Switches ("Ada") use
-- Compiler'Leading_Required_Switches ("Ada") &
-- Common_Required_Switches;
-- for Leading_Required_Switches ("C") use
-- Compiler'Leading_Required_Switches ("C") &
-- Common_Required_Switches;
end Compiler;
package Naming is
for Spec_Suffix ("Ada") use ".ads";
for Body_Suffix ("Ada") use ".adb";
for Casing use "lowercase";
for Dot_Replacement use "-";
end Naming;
package Binder is
for Required_Switches ("Ada") use
Binder'Required_Switches ("Ada") &
("gnatbind_prefix=arm-linux-gnueabihf-");
for Objects_Path_File ("Ada") use "ADA_PRJ_OBJECTS_FILE";
for Driver ("Ada") use "/usr/lib/gprbuild/gprbind";
-- for Required_Switches ("Ada") use
-- Binder'Required_Switches ("Ada") & ("--RTS=/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro/");
end Binder;
package Linker is
for Driver use Compiler'Driver ("Ada");
for Map_File_Option use "-Wl,-Map,";
for Response_File_Format use "GCC_GNU";
for Max_Command_Line_Length use "8192";
-- for Required_Switches use Linker'Required_Switches &
-- ("-L/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro//adalib", "-nolibc", "-nostartfiles") &
-- Compiler.Common_Required_Switches;
-- case Loader is
-- when "USER" =>
-- when others =>
-- for Required_Switches use Linker'Required_Switches &
-- ("-L", "/home/max/net/gnat-arm/arm-eabi/lib/gnat/ravenscar-sfp-sam4sxplainedpro//../bsps/sam4s/bsp/",
-- "-T", "memory-map.ld",
-- "-T", "common-" & Loader & ".ld");
-- end case;
end Linker;
package Clean is
-- Remove the files generated by gnatinspect (in the context of GPS) for Artifacts_In_Object_Dir use Clean'Artifacts_In_Object_Dir & ("gnatinspect.*");
for Source_Artifact_Extensions ("Ada")
use (".dg", ".rep", ".stdout", ".stderr");
for Object_Artifact_Extensions ("Ada") use (".s", ".ci", ".gcno"); end Clean;
end Default;
Это, конечно, хорошо, но этот сизифов труд имеет смысл только если есть желание разобраться, как работает система компиляции в GNAT.
Рекомендую таки настроить gprbuild. Повторюсь, что это не сложно.
Поддерживаю Василия в предложении почитать документацию!
Сообщение "Ignore compiler, since couldn't guess its version" похоже на то, о чем пишут в github issue, на которое я ссылался выше.
Вероятно, как только gprbuild опознает Ваш компилятор, то и системные библиотеки найдутся.
Посмотрите файл share/gprconfig/compilers.xml, а в нем
<compiler_description>
<name>GNAT</name>
<executable prefix="1">(.*-wrs-.*|.*-sysgo.*|.*-elf-.*|.*-eabi-.*....)?gnatmake</executable>
<version>
<external>${PREFIX}gnatls -v --version</external>
<grep regexp="^GNATLS.+?(\d+(\.\d+)?)" group="1"></grep>
</version>
<languages>Ada</languages>
<variable name="gcc_version">
<external>${PREFIX}gcc -v</external>
<grep regexp="^[-\w]*gcc \S+ (\S+)" group="1"></grep>
</variable>
<runtimes default="default,kernel,native">
Это инструкции для gprconfig, как найти компилятор Ады. Сравните с тем, что у Вас выдает -v -v после
GNAT is candidate:...
Добейтесь, чтобы этот "кандидат" "срабатывал" путем правки этих строк в compilers.xml.
Вероятно нужно будет сделать то, что написано в github issue. И проверьте результирующий cgpr, сверив его с уже работающим "ручным" образцом.
Чтв 30 Мар 2017 07:25:26 +0300, sv_lary@fromru.com [ada_ru] <ada_ru@yahoogroups.com> написал:
Насколько я понял, Вы готовите программу для встроенной системы, без линуха? Там про какое-то run-time окружение говорилось..
Я портирую bareboard runtime на новую платку WifiMCU.
https://github.com/reznikmm/embedded-runtimes
Сейчас работа стала, жду JTAG из Китая :) Оправдываясь скажу, что окирпичил железяку залив не Адскую прошивку, а Си-шную :)
Осталось только разобраться, почему у меня Cnat-GPS умирает через 30 секунд работы и можно будет браться за что-то серьёзное...
1) посмотрите последний log файла в $HOME/.gps/
2) убедитесь, что запускаете не gps_exe а shell файл с именем gps
--
Здравствуйте, Максим!
1) посмотрите последний log файла в $HOME/.gps/
Похоже, что какие-то проблемы с библиотекой GTK+. Если просто запустить gps, загрузив проект, но не открывая окно проекта слева - она просто ждёт и всё. Как только открываешь деревяшку проекта - начинают сыпаться сообщения вида
sys:1: Warning: Source ID 3821 was not found when attempting to remove it
Они всегда выскакивают во время движения мышкой. Если открыть на редактирование один файл исходного текста - ничего страшного не происходит. Но, если открыть ещё хотя бы один, то имена файлов на язычках закладок исчезают, курсор превращается в "часики" и через коротко время gps падает.
При этом в конце лог-файла $HOME/.gps/ вижу следующие сообщения:
[SRC_EDITOR_MODULE] 2/806 Open file /home/lary/projects/ada/ada_first/src/hello.adb Focus=TRUE (10:17:16.486)
[UNEXPECTED_EXCEPTION.EXCEPTIONS] 2/809 Unexpected exception: Exception name: CONSTRAINT_ERROR
_UNEXPECTED_EXCEPTION.EXCEPTIONS_ Message: gtkada-mdi.adb:6929 tag check failed (10:17:16.510)
[STANDARD_HOOKS] 2/810 No file editor was registered (10:17:16.510)
[UNEXPECTED_EXCEPTION.EXCEPTIONS] 4/877 Unexpected exception: Exception name: CONSTRAINT_ERROR
_UNEXPECTED_EXCEPTION.EXCEPTIONS_ Message: gtkada-mdi.adb:6929 tag check failed (10:17:40.616)
[UNEXPECTED_EXCEPTION.EXCEPTIONS] 5/878 Unexpected exception: Exception name: STORAGE_ERROR
_UNEXPECTED_EXCEPTION.EXCEPTIONS_ Message: s-intman.adb:139 explicit raise (10:17:40.631)
> 2) убедитесь, что запускаете не gps_exe а shell файл с именем gps
Странно... Мой пакетный менеджер показывает, что в состав пакета gnat-gps входят только следующие файлы:
/usr/bin/gnat-gps
/usr/share/doc/gnat-gps/changelog.Debian.gz
/usr/share/doc/gnat-gps/copyright
/usr/share/man/man1/gnat-gps.1.gz
/usr/share/menu/gnat-gps
И запускается именно gnat-gps...
On 03/31/2017 06:27 AM, sv_lary@fromru.com [ada_ru] wrote:
2) убедитесь, что запускаете не gps_exe а shell файл с именем gps
Странно... Мой пакетный менеджер показывает, что в состав пакета gnat-gps входят только следующие файлы:
Ну так задайте вопрос авторам этого пакета ;) А лучше - поставьте GNAT GPL и используйте проверенную версию GPS из него.
Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти