I am trying to built some sample gtk+ examples that came with the gtk+ sources. My need was only to have a gtk+ UI to a C program. I went about downloading and building gtk+ but realised (through SO) that this was not needed and that I only need libgtk-3-dev.
sudo apt-get install libgtk-3-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libgtk-3-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 373 not upgraded.
EDIT: NOTE: Issue is not with the sequence of libraries or includes as I am using the makefile that came with gtk+.
I tried compiling an example that I had with the gtk+ code I downloaded. I get the below errors. The other queries on this topic mentioned that the order of the flags matter, but in this case I have used the makefile that came with the sources. Should I be installing something more than the libgtk-3-dev library (running on Ubuntu 14.04 ).
~/gtk/examples/application1$ make -f Makefile.example
cc -c -o main.o -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 main.c
cc -c -o exampleapp.o -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 exampleapp.c
cc -c -o exampleappwin.o -pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 exampleappwin.c
cc -o exampleapp -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 main.o exampleapp.o exampleappwin.o
main.o: In function main':
main.c:(.text+0x11): undefined reference tog_application_get_type'
main.c:(.text+0x24): undefined reference to g_type_check_instance_cast'
main.c:(.text+0x35): undefined reference tog_application_run'
exampleapp.o: In function example_app_class_intern_init':
exampleapp.c:(.text+0x14): undefined reference tog_type_class_peek_parent'
exampleapp.c:(.text+0x36): undefined reference to g_type_class_adjust_private_offset'
exampleapp.o: In functionexample_app_get_type':
exampleapp.c:(.text+0x66): undefined reference to g_once_init_enter'
exampleapp.c:(.text+0x84): undefined reference tog_intern_static_string'
exampleapp.c:(.text+0x8c): undefined reference to gtk_application_get_type'
exampleapp.c:(.text+0xb4): undefined reference tog_type_register_static_simple'
exampleapp.c:(.text+0xc9): undefined reference to g_once_init_leave'
exampleapp.o: In functionexample_app_activate':
exampleapp.c:(.text+0x104): undefined reference to g_type_check_instance_cast'
exampleapp.c:(.text+0x115): undefined reference togtk_window_get_type'
exampleapp.c:(.text+0x127): undefined reference to g_type_check_instance_cast'
exampleapp.c:(.text+0x12f): undefined reference togtk_window_present'
exampleapp.o: In function example_app_open':
exampleapp.c:(.text+0x14d): undefined reference togtk_application_get_type'
exampleapp.c:(.text+0x15f): undefined reference to g_type_check_instance_cast'
exampleapp.c:(.text+0x167): undefined reference togtk_application_get_windows'
exampleapp.c:(.text+0x18c): undefined reference to g_type_check_instance_cast'
exampleapp.c:(.text+0x1a9): undefined reference tog_type_check_instance_cast'
exampleapp.c:(.text+0x1f5): undefined reference to gtk_window_get_type'
exampleapp.c:(.text+0x207): undefined reference tog_type_check_instance_cast'
exampleapp.c:(.text+0x20f): undefined reference to gtk_window_present'
exampleapp.o: In functionexample_app_class_init':
exampleapp.c:(.text+0x222): undefined reference to g_application_get_type'
exampleapp.c:(.text+0x234): undefined reference tog_type_check_class_cast'
exampleapp.c:(.text+0x244): undefined reference to g_application_get_type'
exampleapp.c:(.text+0x256): undefined reference tog_type_check_class_cast'
exampleapp.o: In function example_app_new':
exampleapp.c:(.text+0x294): undefined reference tog_object_new'
exampleappwin.o: In function example_app_window_class_intern_init':
exampleappwin.c:(.text+0x14): undefined reference tog_type_class_peek_parent'
exampleappwin.c:(.text+0x36): undefined reference to g_type_class_adjust_private_offset'
exampleappwin.o: In functionexample_app_window_get_type':
exampleappwin.c:(.text+0x66): undefined reference to g_once_init_enter'
exampleappwin.c:(.text+0x84): undefined reference tog_intern_static_string'
exampleappwin.c:(.text+0x8c): undefined reference to gtk_application_window_get_type'
exampleappwin.c:(.text+0xb4): undefined reference tog_type_register_static_simple'
exampleappwin.c:(.text+0xc9): undefined reference to g_once_init_leave'
exampleappwin.o: In functionexample_app_window_new':
exampleappwin.c:(.text+0x117): undefined reference to `g_object_new'
collect2: error: ld returned 1 exit status
make: *** [exampleapp] Error 1
For whatever reason the Makefile in the GTK+ 3.20 source tree is broken; as per n.m.'s comment. There might already be a bugfix, if not a fix, for that.
But you can't use GTK+ 3.20 with the GTK+ 3.10 that comes with Ubuntu 14.04 LTS. You're better off using the GTK+ 3.10 examples and source code. If you really want to use a newer version of GTK+, you can use jhbuild to set up an environment separate from the rest of the system (typically in /opt/gnome) to build a newer versions of GTK+ into.
Related
I am working with this code i found on github.
In order to use the uspi library,the help documentation(USING SECTION) said that i should create a makefile and specify the includes and libraries files there.
Because i am new to makefile concept,i first try to manually do that by typing:
arm-linux-gnueabihf-gcc -O0 -DRPI2 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -std=c99 -I./uspi/env/include -I./uspi/include -L./uspi/lib -luspi w.o -o kernel.elf
this errors comes up:
w.o: In function `main':
w.c:(.text+0xc): undefined reference to `USPiEnvInitialize'
w.c:(.text+0x24): undefined reference to `USPiInitialize'
w.c:(.text+0x48): undefined reference to `LogWrite'
w.c:(.text+0x4c): undefined reference to `USPiEnvClose'
w.c:(.text+0x58): undefined reference to `USPiMassStorageDeviceAvailable'
w.c:(.text+0x80): undefined reference to `LogWrite'
w.c:(.text+0x84): undefined reference to `USPiEnvClose'
w.c:(.text+0xb8): undefined reference to `USPiMassStorageDeviceRead'
w.c:(.text+0xdc): undefined reference to `LogWrite'
w.c:(.text+0x108): undefined reference to `LogWrite'
w.c:(.text+0x124): undefined reference to `LogWrite'
w.c:(.text+0x13c): undefined reference to `LogWrite'
w.c:(.text+0x204): undefined reference to `LogWrite'
w.c:(.text+0x23c): undefined reference to `USPiEnvClose'
collect2: error: ld returned 1 exit status
i need the .elf file so i can generate a .img file from it
This link order:
arm-linux-gnueabihf-gcc ... -luspi w.o -o kernel.elf
is incorrect. Libraries should follow the objects they are referenced from:
arm-linux-gnueabihf-gcc ... w.o -luspi -o kernel.elf
Explanation.
I'm trying to compile a program, but I get the following error when I run make install.
gcc -fPIC -O3 -g -O2 -o treeviewer -L/usr/include -lm -lpng -ljpeg -lgd treeviewer.o tree.o fileio.o tree.o:
In function `drawImage':
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:587: undefined reference to `gdFontMediumBold'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:587: undefined reference to `gdImageString'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:602: undefined reference to `gdImageLine'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:610: undefined reference to `gdImageLine'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:620: undefined reference to `gdImageFilledRectangle'
tree.o: In function `TreeToImage':
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:477: undefined reference to `gdFontMediumBold'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:526: undefined reference to `gdImageCreate'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:527: undefined reference to `gdImageColorAllocate'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:528: undefined reference to `gdImageColorAllocate'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:529: undefined reference to `gdImageColorAllocate'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:530: undefined reference to `gdImageColorAllocate'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:531: undefined reference to `gdImageColorAllocate'
tree.o:/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:532: more undefined references to `gdImageColorAllocate' follow
tree.o: In function `TreeToImage':
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:548: undefined reference to `gdImagePng'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:552: undefined reference to `gdImageDestroy'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:543: undefined reference to `gdImageJpeg'
tree.o: In function `printTreeInfo':
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:642: undefined reference to `gdFontMediumBold'
tree.o: In function `drawImage':
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:627: undefined reference to `gdImageRectangle'
/home/localadmin/codehop-dev/i-codehop/treeviewer/tree.c:624: undefined reference to `gdImageFilledRectangle'
collect2: error: ld returned 1 exit status
make: *** [treeviewer] Error 1
I have installed the libgd using the commmand sudo apt-get -y install libgd2-xpm-dev build-essential. The folder /usr/include has the file gd.h. Could anyone tell me what am I missing? Thanks in advance.
You might need to list the directory where libgd.a is located with -L if it's not in the default directory list for gcc.
Solved it by changing
gcc -fPIC -O3 -g -O2 -o treeviewer -L/usr/include -lm -lpng -ljpeg -lgd treeviewer.o tree.o fileio.o tree.o
to
gcc -fPIC -O3 -g -O2 treeviewer.o tree.o fileio.o tree.o -L/usr/include -lm -lpng -ljpeg -lgd -o treeviewer
I want to compile a very simple C++ program. On the first machine the compilation process works fine and also the program runs fine. However, on the second linux machine I have some libraries not found problems. The compilation process looks like this:
gcc -o WebPageCrawler -lawesomium-1-7 -Wall WebPageCrawler.cc
/tmp/ccoLVzvo.o: In function `main':
WebPageCrawler.cc:(.text+0x28): undefined reference to `std::cout'
WebPageCrawler.cc:(.text+0x2d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
...even more errors...
As you can see the compiler even cannot find stdlibs and the other referenced library awesomium (a headless browser) is also not available. However, the corresponding libs can all be found in /usr/lib. So, there must be something else wrong but I don't know what it might be.
My linux version is
uname -a
Linux Ubuntu-1204-precise-64-minimal 3.2.0-39-generic
I'd appriciate any help. Thx.
UPDATE:
When using g++ I get:
g++ -o WebPageCrawler -lawesomium-1-7 -Wall WebPageCrawler.cc
Unable to exec g++.real: No such file or directory
However, on the other machine I used gcc instead of g++ and it works fine there.
UPDATE2:
Okay, now I'm able to get a least the problem of the stdlibs resolved. I did this by further installing:
apt-get install build-essential g++
However, now the awesomium libs are still not found:
/opt/AwesomiumCrawler # g++ -v -o WebPageCrawler -lawesomium-1-7 -Wall WebPageCrawler.cc
Using built-in specs.
COLLECT_GCC=g++.real
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
COLLECT_GCC_OPTIONS='-v' '-o' 'WebPageCrawler' '-Wall' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/4.6/cc1plus -quiet -v -imultilib . -imultiarch x86_64-linux-gnu -D_GNU_SOURCE WebPageCrawler.cc -quiet -dumpbase WebPageCrawler.cc -mtune=generic -march=x86-64 -auxbase WebPageCrawler -Wall -version -fstack-protector -o /tmp/ccGGfqAI.s
GNU C++ (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (x86_64-linux-gnu)
compiled by GNU C version 4.6.3, GMP version 5.0.2, MPFR version 3.1.0-p3, MPC version 0.9
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127439
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/4.6
/usr/include/c++/4.6/x86_64-linux-gnu/.
/usr/include/c++/4.6/backward
/usr/lib/gcc/x86_64-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
GNU C++ (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (x86_64-linux-gnu)
compiled by GNU C version 4.6.3, GMP version 5.0.2, MPFR version 3.1.0-p3, MPC version 0.9
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127439
Compiler executable checksum: 65b5171ac1bd7b3f07dbea6bdb24be3d
COLLECT_GCC_OPTIONS='-v' '-o' 'WebPageCrawler' '-Wall' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
as --64 -o /tmp/cctijQGE.o /tmp/ccGGfqAI.s
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'WebPageCrawler' '-Wall' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/4.6/collect2 --sysroot=/ --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o WebPageCrawler /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. -lawesomium-1-7 /tmp/cctijQGE.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o
/tmp/cctijQGE.o: In function `main':
WebPageCrawler.cc:(.text+0x8d): undefined reference to `Awesomium::WebConfig::WebConfig()'
WebPageCrawler.cc:(.text+0xc7): undefined reference to `Awesomium::WebString::operator=(Awesomium::WebString const&)'
WebPageCrawler.cc:(.text+0xd6): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0xe5): undefined reference to `Awesomium::WebCore::Initialize(Awesomium::WebConfig const&)'
WebPageCrawler.cc:(.text+0x140): undefined reference to `Awesomium::WebURL::WebURL(Awesomium::WebString const&)'
WebPageCrawler.cc:(.text+0x14c): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x1ed): undefined reference to `Awesomium::WebString::CreateFromUTF8(char const*, unsigned int)'
WebPageCrawler.cc:(.text+0x203): undefined reference to `Awesomium::WebString::CreateFromUTF8(char const*, unsigned int)'
WebPageCrawler.cc:(.text+0x23c): undefined reference to `Awesomium::JSValue::ToString() const'
WebPageCrawler.cc:(.text+0x259): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x27b): undefined reference to `Awesomium::WebCore::Shutdown()'
WebPageCrawler.cc:(.text+0x28c): undefined reference to `Awesomium::JSValue::~JSValue()'
WebPageCrawler.cc:(.text+0x298): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x2a4): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x2b0): undefined reference to `Awesomium::WebURL::~WebURL()'
WebPageCrawler.cc:(.text+0x2dd): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x2ee): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x2ff): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x310): undefined reference to `Awesomium::JSValue::~JSValue()'
WebPageCrawler.cc:(.text+0x321): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x332): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text+0x343): undefined reference to `Awesomium::WebURL::~WebURL()'
/tmp/cctijQGE.o: In function `Update(int)':
WebPageCrawler.cc:(.text+0x372): undefined reference to `Awesomium::WebCore::instance()'
/tmp/cctijQGE.o: In function `Awesomium::ToString(Awesomium::WebString const&)':
WebPageCrawler.cc:(.text._ZN9Awesomium8ToStringERKNS_9WebStringE[Awesomium::ToString(Awesomium::WebString const&)]+0x25): undefined reference to `Awesomium::WebString::IsEmpty() const'
WebPageCrawler.cc:(.text._ZN9Awesomium8ToStringERKNS_9WebStringE[Awesomium::ToString(Awesomium::WebString const&)]+0x4d): undefined reference to `Awesomium::WebString::ToUTF8(char*, unsigned int) const'
WebPageCrawler.cc:(.text._ZN9Awesomium8ToStringERKNS_9WebStringE[Awesomium::ToString(Awesomium::WebString const&)]+0x75): undefined reference to `Awesomium::WebString::ToUTF8(char*, unsigned int) const'
/tmp/cctijQGE.o: In function `Awesomium::WSLit(char const*)':
WebPageCrawler.cc:(.text._ZN9Awesomium5WSLitEPKc[Awesomium::WSLit(char const*)]+0x2d): undefined reference to `Awesomium::WebString::CreateFromUTF8(char const*, unsigned int)'
/tmp/cctijQGE.o: In function `Awesomium::WebConfig::~WebConfig()':
WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x19): undefined reference to `Awesomium::WebStringArray::~WebStringArray()'
WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x29): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x39): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x49): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x59): undefined reference to `Awesomium::WebString::~WebString()'
WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x69): undefined reference to `Awesomium::WebString::~WebString()'
/tmp/cctijQGE.o:WebPageCrawler.cc:(.text._ZN9Awesomium9WebConfigD2Ev[_ZN9Awesomium9WebConfigD5Ev]+0x79): more undefined references to `Awesomium::WebString::~WebString()' follow
collect2: ld returned 1 exit status
As already mentioned the libs lie in
/usr/lib # ls -l *awe*
-rwxr-xr-x 1 root root 8032 Feb 12 18:49 awesomium_process
lrwxrwxrwx 1 root root 21 Feb 12 18:49 libawesomium-1-7.so -> libawesomium-1-7.so.2
lrwxrwxrwx 1 root root 23 Feb 12 18:49 libawesomium-1-7.so.2 -> libawesomium-1-7.so.2.0
-rwxr-xr-x 1 root root 63475481 Feb 12 18:49 libawesomium-1-7.so.2.0
The command to compile C++ code is g++, not gcc.
They're both part of the same collection, but the g++ command adds some extra options; in particular, it implicitly links the C++ standard library.
When compiling with -c, to generate just an object file and not invoke the linker, it may not matter -- but you're generating an executable, which means the linker needs to know about the dependency on the C++ standard library.
UPDATE: And now that you've updated the question: You may need to install g++ (on your system, apt-get install build-essential g++).
And now you have a different problem: g++ can't find the "awesomium" libraries. The libraries are in /usr/lib, so you shouldn't need to specify a -L option. The problem is that the -l option needs to follow the file that depends on it.
The linker processes its command-line arguments in order, keeping track of which symbols still need to be resolved and resolving any unresolved symbols in objects or libraries that it processes later.
So rather than:
g++ -o WebPageCrawler -lawesomium-1-7 -Wall WebPageCrawler.cc
try:
g++ -Wall WebPageCrawler.cc -lawesomium-1-7 -o WebPageCrawler
That specific order isn't mandatory, but it should work.
I would understand this error message if I had not put the -lboost_system flag, but it is really here:
g++ -o build/myproject build/main/main.o -L/usr/local/boost/boost_1_52_0/boost/libs -L/usr/lib -Lbuild -L. -lboost_system -lboost_thread -lpthread -lboost_regex -lpq -lmylibrary
build/libmylibrary.a(library.o): In function `__static_initialization_and_destruction_0(int, int)':
library.cpp:(.text+0x25f): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x269): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x273): undefined reference to `boost::system::system_category()'
Do you have any idea what should I investigate to solve the problem ? (I use gcc 4.6.3)
The order at which you link your libraries matters, in your case you have library.cpp that apparently uses the boost_system library
library.cpp:(.text+0x25f): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x269): undefined reference to `boost::system::generic_category()'
library.cpp:(.text+0x273): undefined reference to `boost::system::system_category()'
To solve this you should move the boost_system library to the end of your link line
g++ -o build/myproject build/main/main.o -L/usr/local/boost/boost_1_52_0/boost/libs -L/usr/lib -Lbuild -L. -lboost_thread -lpthread -lboost_regex -lpq -lmylibrary **-lboost_system**
Alternatively, build libmylibrary.so as a shared library and link to the boost_system library directly.
After upgrading the boost libraries form version 1.52 to 1.53 I get the following linker error when building with GCC under Linux. The same application builds fine under Windows with VC++10 and boost 1.53.
Invoking: GCC C++ Linker
g++ -L"/home/robert/boost_1_53_0/stage/lib" -L/usr/lib -o "MyApp" ./myObjectFile.o -lboost_log_setup-mt-s -lboost_log-mt-s -lboost_thread-mt-s -lboost_system-mt-s -lboost_regex-mt-s -lcryptopp -lboost_date_time-mt-s -lpthread -ldl -lboost_filesystem-mt-s
/home/robert/boost_1_53_0/stage/lib/libboost_thread-mt-s.a(thread.o): In function `boost::this_thread::hiden::sleep_for(timespec const&)':
thread.cpp:(.text+0xc10): undefined reference to `clock_gettime'
/home/robert/boost_1_53_0/stage/lib/libboost_thread-mt-s.a(thread.o): In function `boost::this_thread::hiden::sleep_until(timespec const&)':
thread.cpp:(.text+0x1425): undefined reference to `clock_gettime'
thread.cpp:(.text+0x14cd): undefined reference to `clock_gettime'
thread.cpp:(.text+0x159c): undefined reference to `clock_gettime'
thread.cpp:(.text+0x1684): undefined reference to `clock_gettime'
/home/robert/boost_1_53_0/stage/lib/libboost_thread-mt-s.a(thread.o):thread.cpp:(.text+0x176e): more undefined references to `clock_gettime' follow
collect2: error: ld returned 1 exit status
I built the boost libraries like this:
./bootstrap.sh --with-toolset=gcc
./b2 --layout=tagged variant=debug,release link=static runtime-link=static cxxflags=-std=c++0x
My GCC version is 4.7.2
It basically says that clock_gettime function is not found by the linker. This function is in rt library, so add -lrt to the linker command line.