Dear Rony,
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
cmake -G "Unix Makefiles" -DBUILD_DMG=1 -DCMAKE_BUILD_TYPE=RELEASE
-DCMAKE_INSTALL_PREFIX=~/Applications/ooRexx5 ../oorexxSVN
Any hints welcome
Hälsningar/Regards/Grüsse,
P.O. Jonsson
[email protected]
> Am 16.10.2021 um 15:35 schrieb Rony G. Flatscher <[email protected]>:
>
> 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>
> <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>
> <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
>> [email protected] <mailto:[email protected]>
>>
>>
>>
>>> Am 16.10.2021 um 14:55 schrieb Rony G. Flatscher <[email protected]
>>> <mailto:[email protected]>>:
>>>
>>> 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$
>>>>>
>>>>> <mailto: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$
>>>>>
>>>>> <mailto: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$
>>>>>
>>>>> <mailto: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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel