> On Apr 26, 2020, at 6:02 AM, Timo via gtk-osx-users-list
> <gtk-osx-users-list@gnome.org> wrote:
>
> Hello, I'm not able to compile python-launcher.c from gtk-mac-bundler on
> Mojave. Tried both with the system's Python 2 version as the Python 3 version
> built through jhbuild. For Python 2, the python-config command didn't pick up
> the directory which contains Python.h, so had to include it manually. Here's
> some relevant output:
>
> bash-3.2$ gcc -L$PREFIX/lib `python-config --cflags --ldflags` -o
> $PREFIX/bin/testapp-launcher python-launcher.c
> python-launcher.c:21:10: fatal error: 'Python.h' file not found
> #include <Python.h>
> ^~~~~~~~~~
> 1 error generated.
>
> bash-3.2$ gcc -L$PREFIX/lib `python-config --cflags --ldflags`
> -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
> -o $PREFIX/bin/testapp-launcher python-launcher.c
> python-launcher.c:106:5: warning: implicit declaration of function
> 'Py_SetPath' is invalid in C99
> [-Wimplicit-function-declaration]
> Py_SetPath(path);
> ^
> python-launcher.c:106:5: warning: this function declaration is not a
> prototype [-Wstrict-prototypes]
> python-launcher.c:168:27: warning: incompatible pointer types passing
> 'wchar_t **' (aka 'int **') to
> parameter of type 'char **' [-Wincompatible-pointer-types]
> PySys_SetArgvEx(argc, wargv, 0);
> ^~~~~
> /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/sysmodule.h:14:46:
> note:
> passing argument to parameter here
> PyAPI_FUNC(void) PySys_SetArgvEx(int, char **, int);
> ^
> 3 warnings generated.
> Undefined symbols for architecture x86_64:
> "_Py_SetPath", referenced from:
> _main in python-launcher-875336.o
> ld: symbol(s) not found for architecture x86_64
> python-launcher.c:106:5: warning: implicit declaration of function
> 'Py_SetPath' is invalid in C99
> [-Wimplicit-function-declaration]
> Py_SetPath(path);
> ^
> python-launcher.c:106:5: warning: this function declaration is not a
> prototype [-Wstrict-prototypes]
> python-launcher.c:168:27: warning: incompatible pointer types passing
> 'wchar_t **' (aka 'int **') to
> parameter of type 'char **' [-Wincompatible-pointer-types]
> PySys_SetArgvEx(argc, wargv, 0);
> ^~~~~
> /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/sysmodule.h:14:46:
> note:
> passing argument to parameter here
> PyAPI_FUNC(void) PySys_SetArgvEx(int, char **, int);
> ^
> 3 warnings generated.
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
>
> bash-3.2$ python-config --cflags --ldflags
> -iwithsysroot
> /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
> -iwithsysroot
> /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
> -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os
> -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX
> -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os
> -Wall -Wstrict-prototypes -DENABLE_DTRACE
> -L/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
> -lpython2.7 -ldl -framework CoreFoundation
>
>
> bash-3.2$ gcc -L$PREFIX/lib `python3-config --cflags --ldflags` -o
> $PREFIX/bin/testapp-launcher python-launcher.c
> Undefined symbols for architecture x86_64:
> "_PyRun_SimpleFileExFlags", referenced from:
> _main in python-launcher-f4f0b7.o
> "_PySys_SetArgvEx", referenced from:
> _main in python-launcher-f4f0b7.o
> "_Py_Finalize", referenced from:
> _main in python-launcher-f4f0b7.o
> "_Py_Initialize", referenced from:
> _main in python-launcher-f4f0b7.o
> "_Py_SetPath", referenced from:
> _main in python-launcher-f4f0b7.o
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
>
> bash-3.2$ python3-config --cflags --ldflags
> -I/Users/gtk3/gtk/inst/include/python3.8
> -I/Users/gtk3/gtk/inst/include/python3.8 -Wno-unused-result -Wsign-compare
> -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64
> -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include
> -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
> -mmacosx-version-min=10.14 -arch x86_64
> -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include
> -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
> -mmacosx-version-min=10.14
> -lintl -ldl -framework CoreFoundation
>
> Am I missing something obvious? Thanks.
It seems that python 3.8 requires an additional argument to python3-config,
--embed.
>From https://docs.python.org/3/whatsnew/3.8.html,
"To embed Python into an application, a new --embed option must be passed to
python3-config --libs --embed to get -lpython3.8 (link the application to
libpython). To support both 3.8 and older, try python3-config --libs --embed
first and fallback to python3-config --libs (without --embed) if the previous
command fails."
Gtk-osx doesn't support Python2.
Regards,
John Ralls
_______________________________________________
gtk-osx-users-list mailing list
gtk-osx-users-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-osx-users-list