Dear P.O., congratulations! :)
On 16.10.2021 16:30, P.O. Jonsson wrote: > Your links brought me (almost) to the end, here is the content of > Makefile.macOS: > > # A pretty simple make file that should work on macOS > > # this needs to follow after file for which link resolution is needed > OOREXX_LFLAGS = -I../../../../include -L../../../../lib -lrexx -lrexxapi > > # What we want to build. > all: runRexxProgram stackOverflow > > runRexxProgram: runRexxProgram.cpp > gcc runRexxProgram.cpp ${OOREXX_LFLAGS} -o runRexxProgram > > stackOverflow: stackOverflow.cpp > gcc stackOverflow.cpp $(OOREXX_LFLAGS) -o stackOverflow > > clean: > rm -f stackOverflow runRexxProgram > > I can compile and link but the error message I get when I try to run the > program seems to imply I > am missing something more > > POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean > rm -f stackOverflow runRexxProgram > POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS all > gcc runRexxProgram.cpp -I../../../../include -L../../../../lib -lrexx > -lrexxapi -o runRexxProgram > gcc stackOverflow.cpp -I../../../../include -L../../../../lib -lrexx > -lrexxapi -o stackOverflow > POs-QuadCore-Mac-Pro:native.api po$ runRexxProgram HelloWorld.rex > -bash: runRexxProgram: command not found > POs-QuadCore-Mac-Pro:native.api po$ ./runRexxProgram HelloWorld.rex > dyld: Library not loaded: @rpath/librexx.4.dylib > Referenced from: > /Applications/ooRexx5/share/ooRexx/samples/native.api/./runRexxProgram > Reason: image not found > Abort trap: 6 > POs-QuadCore-Mac-Pro:native.api po$ > > I have checked and librexx.4.dylib is in the /lib folder. Are there some > switches missing in the > CMake call? This is what I have locally At runtime you need to tell the system (loader) where to look for the dylibs and also rexx.img which is located in the same folder as the libraries. On Linux systems this can be done with LD_LIBRARY_PATH on Macs it used to be the case that it was honored and also the Mac DYLD_LIBRARY_PATH. For "security" reasons Apple ignores these variables if certain system programs (that need to get secured according to Apple) get run. If you look up rexxj.sh which BSF4ooRexx on Mac you get an idea how to come by. > cmake -G "Unix Makefiles" -DBUILD_DMG=1 -DCMAKE_BUILD_TYPE=RELEASE > -DCMAKE_INSTALL_PREFIX=~/Applications/ooRexx5 ../oorexxSVN If you had ooRexx installed to /usr/local/* the program should be able to run and probably can be compiled without Makefile changes (if you try, do a "make -f Makefile.linux clean" first such as to force a new build). HTH ---rony > >> Am 16.10.2021 um 15:35 schrieb Rony G. Flatscher <rony.flatsc...@wu.ac.at >> <mailto:rony.flatsc...@wu.ac.at>>: >> >> Hi P.O., >> >> just a few thoughts (am about to leave the office): >> >> * the compiler needs to be able to resolve the include files, cf. >> <https://www.rapidtables.com/code/linux/gcc/gcc-i.html>, on Linux they >> are found (while >> ooRexx is installed), >> * the compiler needs to be able to locate the dylibs (librexx.dylib and >> librexxapi.dylib), >> usually one could use "-L...path..." to point to the ooRexx library >> directory, cf. >> <https://www.rapidtables.com/code/linux/gcc/gcc-l.html> >> >> So, if the compiler does not find the include and dylib files in the >> directories it looks for, >> you would have to supply the locations either with supplying the directories >> with the appropriate >> switches in the appropriate gcc switches or via the environment variables >> the compiler may consult. >> >> Good luck! :) >> >> ---rony >> >> >> On 16.10.2021 15:22, P.O. Jonsson wrote: >>> Dear Rony, >>> >>> I wanted to try this out on macOS (High Sierra) but got into problems >>> straight away >>> >>> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean >>> rm -f stackOverflow runRexxProgram >>> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS all >>> gcc runRexxProgram.cpp -lrexx -lrexxapi -o runRexxProgram >>> runRexxProgram.cpp:51:10: fatal error: 'oorexxapi.h' file not found >>> #include "oorexxapi.h" >>> ^~~~~~~~~~~~~ >>> 1 error generated. >>> make: *** [runRexxProgram] Error 1 >>> POs-QuadCore-Mac-Pro:native.api po$ >>> >>> I could do away with that problem by copying the header files into the >>> sample directory (a hack, >>> I know). But I got another error instead >>> >>> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean >>> rm -f stackOverflow runRexxProgram >>> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS all >>> gcc runRexxProgram.cpp -lrexx -lrexxapi -o runRexxProgram >>> ld: library not found for -lrexx >>> clang: error: linker command failed with exit code 1 (use -v to see >>> invocation) >>> make: *** [runRexxProgram] Error 1 >>> >>> So I added the -v to get more information >>> >>> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS clean >>> rm -f stackOverflow runRexxProgram >>> POs-QuadCore-Mac-Pro:native.api po$ make -f Makefile.macOS runRexxProgram >>> gcc -v runRexxProgram.cpp -lrexx -lrexxapi -o runRexxProgram >>> Apple LLVM version 10.0.0 (clang-1000.10.44.4) >>> Target: x86_64-apple-darwin17.7.0 >>> Thread model: posix >>> InstalledDir: /Library/Developer/CommandLineTools/usr/bin >>> "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple >>> x86_64-apple-macosx10.13.0 >>> -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj >>> -mrelax-all >>> -disable-free -disable-llvm-verifier -discard-value-names -main-file-name >>> runRexxProgram.cpp >>> -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim >>> -fno-strict-return >>> -masm-verbose -munwind-tables -target-cpu penryn -dwarf-column-info >>> -debugger-tuning=lldb >>> -target-linker-version 409.12 -v -resource-dir >>> /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0 -stdlib=libc++ >>> -fdeprecated-macro >>> -fdebug-compilation-dir >>> /Applications/ooRexx5/share/ooRexx/samples/native.api -ferror-limit 19 >>> -fmessage-length 80 -stack-protector 1 -fblocks >>> -fencode-extended-block-signature >>> -fobjc-runtime=macosx-10.13.0 -fcxx-exceptions -fexceptions >>> -fmax-type-align=16 >>> -fdiagnostics-show-option -fcolor-diagnostics -o >>> /var/folders/6r/ytvfjqwx7td5_cvdj6_m9vcr0000gn/T/runRexxProgram-f8319d.o -x >>> c++ runRexxProgram.cpp >>> clang -cc1 version 10.0.0 (clang-1000.10.44.4) default target >>> x86_64-apple-darwin17.7.0 >>> ignoring nonexistent directory "/usr/include/c++/v1" >>> #include "..." search starts here: >>> #include <...> search starts here: >>> /Library/Developer/CommandLineTools/usr/include/c++/v1 >>> /usr/local/include >>> /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/include >>> /Library/Developer/CommandLineTools/usr/include >>> /usr/include >>> /System/Library/Frameworks (framework directory) >>> /Library/Frameworks (framework directory) >>> End of search list. >>> "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library >>> /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -no_deduplicate >>> -dynamic -arch x86_64 >>> -macosx_version_min 10.13.0 -o runRexxProgram >>> /var/folders/6r/ytvfjqwx7td5_cvdj6_m9vcr0000gn/T/runRexxProgram-f8319d.o >>> -lrexx -lrexxapi >>> -lSystem >>> /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a >>> ld: library not found for -lrexx >>> clang: error: linker command failed with exit code 1 (use -v to see >>> invocation) >>> make: *** [runRexxProgram] Error 1 >>> >>> Any idea what I need to do to get this working on a Mac? >>> >>> Hälsningar/Regards/Grüsse, >>> P.O. Jonsson >>> oor...@jonases.se <mailto:oor...@jonases.se> >>> >>> >>> >>>> Am 16.10.2021 um 14:55 schrieb Rony G. Flatscher <rony.flatsc...@wu.ac.at >>>> <mailto:rony.flatsc...@wu.ac.at>>: >>>> >>>> Here a minimal working Makefile.linux: >>>> >>>> # A pretty simple make file that should work on most Unix-like >>>> platforms that have gcc. >>>> >>>> OOREXX_LFLAGS = -lrexx -lrexxapi # needs to follow after file for >>>> which link resoultion is needed >>>> >>>> # What we want to build. >>>> all: runRexxProgram stackOverflow >>>> >>>> runRexxProgram: runRexxProgram.cpp >>>> gcc runRexxProgram.cpp ${OOREXX_LFLAGS} -o runRexxProgram >>>> >>>> stackOverflow: stackOverflow.cpp >>>> gcc stackOverflow.cpp $(OOREXX_LFLAGS) -o stackOverflow >>>> >>>> clean: >>>> rm -f stackOverflow runRexxProgram >>>> >>>> If there are no objections (Makefiles are sometimes religious), I would >>>> replace the non-working >>>> version with the above one. >>>> >>>> ---rony >>>> >>>> >>>> On 15.10.2021 16:17, Rony G. Flatscher wrote: >>>>> >>>>> After having time to look closer, it turns out that the Makefile.linux >>>>> has been faulty! Here a >>>>> version that works (a little bit simplified and removed a superfluous >>>>> definition, the link >>>>> switches now trail the file to be created): >>>>> >>>>> OOREXX_LFLAGS = -L. -ldl -lrexx -lrexxapi >>>>> OOREXX_CFLAGS = -fPIC >>>>> >>>>> >>>>> # What we want to build. >>>>> all: runRexxProgram stackOverflow >>>>> >>>>> runRexxProgram.o: runRexxProgram.cpp >>>>> gcc -c $(OOREXX_CFLAGS) -o runRexxProgram.o runRexxProgram.cpp >>>>> >>>>> runRexxProgram: runRexxProgram.o >>>>> gcc runRexxProgram.o -o runRexxProgram $(OOREXX_LFLAGS) >>>>> >>>>> stackOverflow.o: stackOverflow.cpp >>>>> gcc -c $(OOREXX_CFLAGS) -o stackOverflow.o stackOverflow.cpp >>>>> >>>>> stackOverflow: stackOverflow.o >>>>> gcc stackOverflow.o -o stackOverflow $(OOREXX_LFLAGS) >>>>> >>>>> clean: >>>>> rm -f *.so *.o stackOverflow runRexxProgram >>>>> >>>>> Will commit the changes to this Makefile tomorrow. >>>>> >>>>> ---rony >>>>> >>>>> >>>>> On 14.10.2021 15:31, Rony G. Flatscher wrote: >>>>>> >>>>>> While testing the Makefile.linux for native.api on Ubuntu I encounter >>>>>> the following problem >>>>>> (oorexx got installed to /usr/local): >>>>>> >>>>>> >>>>>> rony@rony-linux:~/work/oorexx-build/orx1/usr/local/share/ooRexx/samples/native.api$ >>>>>> make -f Makefile.linux clean >>>>>> rm -f *.so *.o stackOverflow runRexxProgram >>>>>> >>>>>> >>>>>> rony@rony-linux:~/work/oorexx-build/orx1/usr/local/share/ooRexx/samples/native.api$ >>>>>> make -f Makefile.linux runRexxProgram >>>>>> gcc -c -fPIC -o runRexxProgram.o runRexxProgram.cpp >>>>>> gcc -L. -ldl -lrexx -lrexxapi runRexxProgram.o -o runRexxProgram >>>>>> /usr/bin/ld: runRexxProgram.o: in function `main': >>>>>> runRexxProgram.cpp:(.text+0x9a): undefined reference to >>>>>> `RexxCreateInterpreter' >>>>>> collect2: error: ld returned 1 exit status >>>>>> make: *** [Makefile.linux:54: runRexxProgram] Error 1 >>>>>> >>>>>> >>>>>> rony@rony-linux:~/work/oorexx-build/orx1/usr/local/share/ooRexx/samples/native.api$ >>>>>> nm runRexxProgram.o >>>>>> U exit >>>>>> U _GLOBAL_OFFSET_TABLE_ >>>>>> 0000000000000000 T main >>>>>> U printf >>>>>> U puts >>>>>> U RexxCreateInterpreter >>>>>> U __stack_chk_fail >>>>>> U strcmp >>>>>> 0000000000000000 W _Z16conditionSubCodeP13RexxCondition >>>>>> 00000000000003c9 T _Z17checkForConditionP18RexxThreadContext_b >>>>>> 0000000000000243 T >>>>>> _Z20standardConditionMsgP18RexxThreadContext_P20_RexxDirectoryObjectP13RexxCondition >>>>>> 00000000000001c7 T _Z23printInterpreterVersionP13RexxInstance_ >>>>>> 0000000000000000 W _ZN13RexxInstance_13LanguageLevelEv >>>>>> 0000000000000000 W _ZN13RexxInstance_18InterpreterVersionEv >>>>>> 0000000000000000 W _ZN13RexxInstance_9TerminateEv >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_10ArrayItemsEP16_RexxArrayObject >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_10ArrayOfOneEP14_RexxObjectPtr >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_11CallProgramEPKcP16_RexxArrayObject >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_12SendMessage0EP14_RexxObjectPtrPKc >>>>>> 0000000000000000 W _ZN18RexxThreadContext_14CheckConditionEv >>>>>> 0000000000000000 W _ZN18RexxThreadContext_14ClearConditionEv >>>>>> 0000000000000000 W _ZN18RexxThreadContext_16GetConditionInfoEv >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_19DecodeConditionInfoEP20_RexxDirectoryObjectP13RexxCondition >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_19ObjectToStringValueEP14_RexxObjectPtr >>>>>> 0000000000000000 W _ZN18RexxThreadContext_6StringEPKc >>>>>> 0000000000000000 W >>>>>> _ZN18RexxThreadContext_7ArrayAtEP16_RexxArrayObjectm >>>>>> 0000000000000000 W _ZN18RexxThreadContext_7CStringEP14_RexxObjectPtr >>>>>> >>>>>> The version that CMake creates works. >>>>>> >>>>>> ---rony >>>>>>
_______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel