Clang doesn't link dependencies of GTK3 and Webkit2GTK - c

I'm making a simple web browser using GTK3 and Webkit2GTK. When compiling the program, it doesn't have any error, but when I try to run it, I got this error:
$ ./a.out
CANNOT LINK EXECUTABLE "./a.out": library "libGL.so" not found
I tried to compile the program with -lGL, but it throws another executable link error.
What did I doing wrong? This is my command:
clang main.c `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0`

Related

How to build an executable file cross platform from linux to windows?

I wrote a GTK3+ project in c , and i am trying to build it so i can make it into a executable file for windows , and i have no idea on how to do it , i saw some articles about building .exe files using MingW so i tried it as such :
x86_64-w64-mingw32-gcc -g -o test PROJECT_INTERFACE.c PROJECT.c pkg-config --libs gtk+-3.0 pkg-config --cflags gtk+-3.0
but i get this error message :
error
can someone help me with building this project for end-user?

gcc options: pkg-config --libs --cflags gtk+-3.0

I am trying to learn gtk and following this link : http://zetcode.com/gui/gtk2/firstprograms/ I was able to get a basic program to run. The way to compile the code was to use the command:
gcc -o simple simple.c `pkg-config --libs --cflags gtk+-3.0`
I want to understand what the flags pkg-config --libs --cflags gtk+-3.0 mean.
I tried searching the man page for the flags pkg-config, --libs and --cflags, but couldn't find them. I would feel fairly satisfied if I understood what that snippet of text inside the `` actually means.
To compile a program using GTK+ 3.0 you need to provide compile options to tell the compiler where to look for include files and library files.
You can either specify them directly with the appropriate compiler options.
Or you can use the flags that were configured when you installed the GTK+ packages.
These flags can be retrieved using pkg-config command.
Putting the command in `` causes the content to be executed and being replaced by the output of the command.
This will provide the compile flags (--cflags) and library options (--libs) needed to build your application.

C compile error - #include "cmakeconfig.h" - No such file or directory

On a Linux Mint 64bit system using gcc
I'm trying to compile the MiniBrowser example included with the WebKit package that I downloaded. webkitgtk-2.22.3
I have successfully setup the WebKit library, but when I try to compile the Tools/MiniBrowser example I get the error message given in the question title.
NOTE: There is no file on my system called cmakeconfig.h
NOTE: There are a few files called CMakeLists.txt that I do not know what to do with.
NOTE: Compiled using:
gcc `pkg-config --cflags gtk+-3.0 webkit2gtk-4.0 gstreamer-1.0` -o main main.c `pkg-config --libs gtk+-3.0 webkit2gtk-4.0 gstreamer-1.0`
As per the question comments. Use the Linux command cmake with the argument CMakeLists.txt which hopefully will generate the file cmakeconfig.h
$ cmake CMakeLists.txt

Not able to compile GTK3+ program on windows

I am using MinGW and I have set the path for the same in the Environment Variables. I have also set the path for GTK in the Environment Variables.
MInGW has been set up successfully since I am able to use the gcc commands to compile regular C programs.
Even GTK has been set up successfully (confirmed by entering pkg-config --cflags gtk+-3.0 in cmd which prints out a list of variables and also ran a already compiled GTK application succesfully).
I have also set the path for pkgconfig in the Environment Variables.
Variable Name-PKG_CONFIG_PATH and Value-C:\gtk\lib\pkgconfig
Even after the complete set up, there are some errors which occur when I try compiling a GTK program.
Command used:
gcc hello.c -o hello 'pkg-config --cflags --libs gtk+-3.0'
Note: I have used ` in the actual command and not '(used ' here to prevent highlighting).
Errors:
pkg-config no such directory found.
gtk+-3.0 no such directory found
unrecognized command line option --cflags unrecognized command line
option --labs
Tools I tried:
Windows cmd
MingW Shell
MSYS2
Cygwin Terminal (I haven't set up Cygwin path in the environment variables to prevent errors between Cygwin and MingW)
Can someone help me in figuring out what's the actual issue even after completing all the set up steps I mentioned above? Please help me!
Forums I already checked out:
Compiling and running GTK+ application on Windows 7
http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm
And more...But nothing has helped me so far!
So I understand you have been using:
gcc hello.c -o hello `pkg-config --cflags --libs gtk+-3.0`
You appear to be trying to be clever with pkg-config. Have you tried using --libs & --cflags separately?
e.g.:
gcc `pkg-config --cflags gtk+-3.0` -o hello hello.c `pkg-config --libs gtk+-3.0`
For more info see here

GStreamer: No such file or directory

I am working on a project that I need to display video to a window. So I do some research and find out GStreamer lib is probably a good way to go since I have a GUI written with GTK. However, after 2 hours trying to install and compile GStream on my Mac, I still get:
error: gts/gts.h: No such file or directory
What I did is install Gstreamer SDK for Mac OS from the official website. Export path:
export PATH=/Library/Frameworks/GStreamer.framework/Version/0.10/Headers:$PATH
Compile:
gcc test.c `pkg-config --cflags --libs gtk+-2.0` `pkg-config --cflags --libs gtk-1.0`
But I have no luck!. Please help!!!
First of all: You can't specify GCC's include path using the PATH variable. Its sole purpose is for the shell (or to be more specific: for the various flavors of exec()) to find executables you want to run.
You might want to modify your gcc command line like that (gstreamer-0.10 instead of gst-0.10):
gcc test.c `pkg-config --cflags --libs gtk+-2.0 gtk-1.0 gstreamer-0.10`
If that still doesn't work, look at the output of the pkgconfig command (by running it alone):
pkg-config --cflags --libs gtk+-2.0 gtk-1.0 gstreamer-0.10
That should give you either a list of gcc flags or an error message that should help you resolve your issue.

Resources