hfst
April 4, 2018, 8:16pm
#1
Ich folge der Installationsanleitung .
Ich habe ein Verzeichnis work erstellt und die drei git -Aufrufe haben dort dann drei Verzeichnisse (libosmium, osmium-tool, protozero ) angelegt.
Dann heißt es, dass ein Verzeichnis build angelegt werden soll. Leider kann ich aus der Anleitung nicht erkennen, ob das unterhalb von work oder neben work angelegt werden soll. Ich habe es neben work angelegt.
Im Verzeichnis build starte ich dann entsprechend der Anleitung cmake … . Leider kommt da die Fehlermeldung
CMake Error: The source directory "/home/hfst/bin/osmosis" does not appear to contain CMakeLists.txt.
was ja zutrifft.
An welcher Stelle habe ich die Anleitung falsch verstanden?
mmd
April 4, 2018, 8:30pm
#2
Build sollte unterhalb von work liegen.
hfst
April 4, 2018, 8:36pm
#3
Ok, wenn man die Anleitung grade runter liest dann liegt work unterhalb von build . Ich hab’s geändert. Allerdings funktioniert’s immer noch nicht, weil in work ja auch kein CMakeLists.txt liegt.
mmd
April 4, 2018, 8:41pm
#4
Dann fehlen dort die sources vom osmium-tool, dort findet sich diese Datei.
Aber irgendwie passt das nicht zu den Schritten in travis.yml
Weide
April 4, 2018, 8:42pm
#5
Willst Du das gern selbst machen oder nur haben? Falls letzteres:
Wenn Du im Yast als Installationsquelle
http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.3/
hinzufügst, kannst Du das Paket libosmium-devel per Yast installieren.
Nakaner
(Nakaner)
April 4, 2018, 8:45pm
#6
Hallo,
das Build-Verzeichnis muss im Verzeichnis osmium-tool liegen. libosmium und protozero musst du nicht separat kompilieren, da die beiden Header-only-Bibliotheken sind. Also:
WORKDIR=$(pwd)
cd osmium-tool
mkdir build
cmake ..
CMake wird das Osmium-Verzeichnis und das Protozero-Verzeichnis nicht finden. Daher empfehle ich dir cmake-curses-gui (so heißt das Paket unter Debian, keine Ahnung, wie das Programm namens ccmake unter OpenSUSE heißt). Dann kannst du mit
ccmake ..
die fehlenden Variablen (OSMIUM_INCLUDE_DIR und PROTOZERO_INCLUDE_DIR) setzen. OSMIUM_INCLUDE_DIR dürfte dann $WORKDIR/libosmium/include sein und PROTOZERO_INCLUDE_DIR dürfte dann $WORKDIR/protozero/include sein.
Wenn du die Variablen in ccmake gesetzt hast (Vorsicht, nicht das Vim-Kommando ESC verwenden ;)), drückst du C und, wenn kein Fehler aufgetreten ist, G. Danach kannst du es mit “make” kompilieren. Falls du ein paar Kerne übrig hast, sei dir “make -j 4” (oder auch mehr oder weniger) ans Herz gelegt.
Die CMake-Variablen heißen u.U. leicht anders, ich habe diese Antwort gerade auswendig getippt, weil ich andauernd mit Libosmium (und manchmal auch an) arbeite.
Viele Grüße
Michael
hfst
April 4, 2018, 8:47pm
#7
hmmm … wenn ich der Anleitung folge wird ein Verzeichnis work/osmium-tool angelegt. Und dort liegt dann auch eine/die CMakeLists.txt .
Nakaner
(Nakaner)
April 4, 2018, 8:48pm
#8
Die Anleitung ist geringfügig unvollständig und bekommt gleich noch ein Pull-Request.
mmd
April 4, 2018, 8:50pm
#9
Cmake sollte doch libosmium automatisch finden, wenn es im Osmium-Tool Verzeichnis liegt, oder? (Bin gerade ohne System)
Die Struktur wäre dann:
Osmium-Tool
build
libosmium
Protozero
Nakaner
(Nakaner)
April 4, 2018, 8:52pm
#10
Ja, du hast Recht. Schließlich steht im find-osmium.cmake ja auch ein “…/libosmium”.
hfst
April 4, 2018, 9:20pm
#11
Wenn ich der Anleitung folge ist die Struktur:
.
└── work
├── build
├── libosmium
├── osmium-tool
└── protozero
hfst
April 4, 2018, 9:25pm
#12
Weide:
Willst Du das gern selbst machen oder nur haben? Falls letzteres:
Wenn Du im Yast als Installationsquelle
http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.3/
hinzufügst, kannst Du das Paket libosmium-devel per Yast installieren.
Habe ich auch probiert, aber: Da bekomme ich (erwartungsgemäß) “nur” die hpp-Dateien aber nicht das osmium-tool
hfst
April 4, 2018, 9:50pm
#13
So, jetzt habe ich das build im osmium-tool angelegt. Also so
.
└── work
├── libosmium
│ ├── benchmarks
│ ├── cmake
│ ├── doc
│ ├── examples
│ ├── include
│ └── test
├── osmium-tool
│ ├── build <-----------------------
│ ├── cmake
│ ├── export-example-config
│ ├── extract-example-config
│ ├── include
│ ├── man
│ ├── scripts
│ ├── src
│ ├── test
│ └── zsh_completion
└── protozero
├── bench
├── cmake
├── doc
├── include
├── test
└── tools
Wenn ich in build das cmake … aufrufe läuft schon einiges. Aber es gibt Fehler
...
/usr/bin/cc CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o -o cmTC_a86de -rdynamic
CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o: In Funktion »main«:
CheckSymbolExists.c:(.text+0x16): Warnung: undefinierter Verweis auf »pthread_create«
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_a86de.dir/build.make:97: recipe for target 'cmTC_a86de' failed
gmake[1]: *** [cmTC_a86de] Error 1
gmake[1]: Leaving directory '/home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_a86de/fast' failed
gmake: *** [cmTC_a86de/fast] Error 2
...
Nakaner
(Nakaner)
April 4, 2018, 10:11pm
#14
hfst:
So, jetzt habe ich das build im osmium-tool angelegt. Also so
.
└── work
├── libosmium
│ ├── benchmarks
│ ├── cmake
│ ├── doc
│ ├── examples
│ ├── include
│ └── test
├── osmium-tool
│ ├── build <-----------------------
│ ├── cmake
│ ├── export-example-config
│ ├── extract-example-config
│ ├── include
│ ├── man
│ ├── scripts
│ ├── src
│ ├── test
│ └── zsh_completion
└── protozero
├── bench
├── cmake
├── doc
├── include
├── test
└── tools
Wenn ich in build das cmake … aufrufe läuft schon einiges. Aber es gibt Fehler
...
/usr/bin/cc CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o -o cmTC_a86de -rdynamic
CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o: In Funktion »main«:
CheckSymbolExists.c:(.text+0x16): Warnung: undefinierter Verweis auf »pthread_create«
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_a86de.dir/build.make:97: recipe for target 'cmTC_a86de' failed
gmake[1]: *** [cmTC_a86de] Error 1
gmake[1]: Leaving directory '/home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_a86de/fast' failed
gmake: *** [cmTC_a86de/fast] Error 2
...
Aus dem Schnipsel allein werde ich nicht schlau. Könntest du bitte die gesamte Ausgabe uns zeigen?
Hast du alle erforderlichen Abhängigkeiten von Libosmium installiert?
hfst
April 5, 2018, 5:20am
#15
cmake, make OK
google Protokollbuffer brauchen wir nicht N.A.
OSMPBF brauchen wir nicht N.A.
Protozero >= 1.5.1 habe ich aus dem GIT geholt, aber nichts gemacht ???
utfcpp habe ich nachinstalliert (heißt bei Opensuse übrigens utfcpp-devel aber es geht immer noch nicht OK
libexpat-devel OK
zlib-devel OK
boost siehe unten
Google Sparsehash (steht nicht im Readme!) heißt bei suse sparsehash-devel
gdal steht nicht im Readme
Geos steht nicht im Readme
Proj.4 steht nicht im Readme
Doxygen steht nciht im Readme
Jetzt zum boost. Da kennt opensuse 42.3:
“boost-devel” 1.54.0-15.15
“boost_1_58_0-devel” 1.58.0-8.1
“boost_1_61_-devel” 1.61.0-4.2
was soll ich da installieren?
hfst
April 5, 2018, 5:22am
#16
Hier noch CMakeError.log
Determining if the pthread_create exist failed with the following output:
Change Dir: /home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_a86de/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_a86de.dir/build.make CMakeFiles/cmTC_a86de.dir/build
gmake[1]: Entering directory '/home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o
/usr/bin/cc -o CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o -c /home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_a86de
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a86de.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o -o cmTC_a86de -rdynamic
CMakeFiles/cmTC_a86de.dir/CheckSymbolExists.c.o: In Funktion »main«:
CheckSymbolExists.c:(.text+0x16): Warnung: undefinierter Verweis auf »pthread_create«
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_a86de.dir/build.make:97: recipe for target 'cmTC_a86de' failed
gmake[1]: *** [cmTC_a86de] Error 1
gmake[1]: Leaving directory '/home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_a86de/fast' failed
gmake: *** [cmTC_a86de/fast] Error 2
File /home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <pthread.h>
int main(int argc, char** argv)
{
(void)argv;
#ifndef pthread_create
return ((int*)(&pthread_create))[argc];
#else
(void)argc;
return 0;
#endif
}
Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_6a639/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_6a639.dir/build.make CMakeFiles/cmTC_6a639.dir/build
gmake[1]: Entering directory '/home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_6a639.dir/CheckFunctionExists.c.o
/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTC_6a639.dir/CheckFunctionExists.c.o -c /usr/share/cmake/Modules/CheckFunctionExists.c
Linking C executable cmTC_6a639
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6a639.dir/link.txt --verbose=1
/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_6a639.dir/CheckFunctionExists.c.o -o cmTC_6a639 -rdynamic -lpthreads
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: -lpthreads kann nicht gefunden werden
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_6a639.dir/build.make:97: recipe for target 'cmTC_6a639' failed
gmake[1]: *** [cmTC_6a639] Error 1
gmake[1]: Leaving directory '/home/hfst/bin/osmosis/work/osmium-tool/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_6a639/fast' failed
gmake: *** [cmTC_6a639/fast] Error 2
mmd
April 5, 2018, 5:59am
#17
hfst
April 5, 2018, 6:47am
#18
dass ich >= 1.55 brauche steht auch im Readme. Aber damit weiß ich noch nicht, ob
“boost_1_58_0-devel” 1.58.0-8.1 oder
“boost_1_61-devel” 1.61.0-4.2
die richtige ist.
toc-rox
(Klaus)
April 5, 2018, 7:01am
#19
Willst du eigentlich nur das Tool nutzen oder hast du mehr vor?
mmd
April 5, 2018, 7:47am
#20
Würde mal sagen, keine der beiden ist falsch such dir eine der beiden aus. Das hängt natürlich auch davon ab, was ansonsten so auf dem System benötigt wird.