m13253 / lvdo

Video steganography implementation
GNU General Public License v3.0
98 stars 11 forks source link

Modified to explicitly use gcc-4.4 #1

Closed jabbany closed 10 years ago

jabbany commented 10 years ago

Cannot compile using gcc>4.4 (4.8 is default on Ubuntu). Modified make to use 4.4 explicitly.

m13253 commented 10 years ago

My GCC version: gcc (GCC) 4.9.0 20140521 (prerelease) I can compile it with GCC 4.9.0, or Clang 3.4.1, or TCC 0.9.26.

Please attach any output given by gcc-4.8.

And, anyway, you can use make CC=gcc-4.4 instead of modifying the Makefile.

Using a separate build directory is good. But it is my personal flavor to mix them. :-)

Anyway, thank you very much.

m13253 commented 10 years ago

I have merged commit a43625b7a26e4d358ae2dad5cefe583dc72de8ef manually.

Thank you for the correction.

Closing then. If you have any question, reopen it please.

m13253 commented 10 years ago

Also, just a reminder. You accidentally put binary files into your commit.

jabbany commented 10 years ago
gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gcc -c -Wall -O3 -g3 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include   -lfftw3 -lglib-2.0   -lm -o build/lvdoenc.o src/lvdoenc.c
gcc -c -Wall -O3 -g3 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include   -lfftw3 -lglib-2.0   -lm -o build/lvdomain.o src/lvdomain.c
gcc -Wall -O3 -g3 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include   -lfftw3 -lglib-2.0   -lm -o build/lvdoenc build/lvdoenc.o build/lvdomain.o
build/lvdomain.o: In function `main':
/home/.../build/lvdo/src/lvdomain.c:46: undefined reference to `g_option_context_new'
/home/.../build/lvdo/src/lvdomain.c:47: undefined reference to `g_option_context_add_main_entries'
/home/.../build/lvdo/src/lvdomain.c:48: undefined reference to `g_option_context_parse'
/home/.../build/lvdo/src/lvdomain.c:53: undefined reference to `g_option_context_free'
/home/.../build/lvdo/src/lvdomain.c:49: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdomain.c:50: undefined reference to `g_option_context_free'
/home/.../build/lvdo/src/lvdomain.c:59: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdomain.c:69: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdomain.c:65: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdomain.c:80: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdomain.c:55: undefined reference to `g_printerr'
build/lvdomain.o:/home/.../build/lvdo/src/lvdomain.c:90: more undefined references to `g_printerr' follow
build/lvdoenc.o: In function `lvdo_enc_frame':
/home/.../build/lvdo/src/lvdoenc.c:79: undefined reference to `ceil'
/home/.../build/lvdo/src/lvdoenc.c:91: undefined reference to `fftw_execute'
build/lvdoenc.o: In function `prevent_yuv_overflow':
/home/.../build/lvdo/src/lvdocommon.h:41: undefined reference to `g_printerr'
build/lvdoenc.o: In function `lvdo_enc_frame':
/home/.../build/lvdo/src/lvdoenc.c:94: undefined reference to `round'
build/lvdoenc.o: In function `prevent_yuv_overflow':
/home/.../build/lvdo/src/lvdocommon.h:37: undefined reference to `g_printerr'
build/lvdoenc.o: In function `print_block_double':
/home/.../build/lvdo/src/lvdocommon.h:86: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdocommon.h:87: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdocommon.h:89: undefined reference to `g_printerr'
build/lvdoenc.o: In function `lvdo_enc_frame':
/home/.../build/lvdo/src/lvdoenc.c:79: undefined reference to `sqrt'
build/lvdoenc.o: In function `lvdo_dispatch':
/home/.../build/lvdo/src/lvdoenc.c:30: undefined reference to `g_malloc'
/home/.../build/lvdo/src/lvdoenc.c:31: undefined reference to `g_malloc'
/home/.../build/lvdo/src/lvdoenc.c:32: undefined reference to `g_malloc'
build/lvdoenc.o: In function `new_zigzag_index':
/home/.../build/lvdo/src/lvdocommon.h:50: undefined reference to `g_malloc_n'
build/lvdoenc.o: In function `new_zigzag_reverse':
/home/.../build/lvdo/src/lvdocommon.h:62: undefined reference to `g_malloc_n'
/home/.../build/lvdo/src/lvdocommon.h:68: undefined reference to `g_free'
build/lvdoenc.o: In function `lvdo_dispatch':
/home/.../build/lvdo/src/lvdoenc.c:34: undefined reference to `fftw_malloc'
/home/.../build/lvdo/src/lvdoenc.c:35: undefined reference to `fftw_malloc'
/home/.../build/lvdo/src/lvdoenc.c:36: undefined reference to `fftw_plan_r2r_2d'
/home/.../build/lvdo/src/lvdoenc.c:41: undefined reference to `g_printerr'
/home/.../build/lvdo/src/lvdoenc.c:58: undefined reference to `fftw_free'
/home/.../build/lvdo/src/lvdoenc.c:58: undefined reference to `fftw_free'
/home/.../build/lvdo/src/lvdoenc.c:58: undefined reference to `fftw_destroy_plan'
/home/.../build/lvdo/src/lvdoenc.c:59: undefined reference to `g_free'
/home/.../build/lvdo/src/lvdoenc.c:59: undefined reference to `g_free'
/home/.../build/lvdo/src/lvdoenc.c:59: undefined reference to `g_free'
/home/.../build/lvdo/src/lvdoenc.c:59: undefined reference to `g_free'
build/lvdoenc.o: In function `new_zigzag_reverse':
/home/.../build/lvdo/src/lvdocommon.h:62: undefined reference to `g_malloc_n'
build/lvdoenc.o: In function `lvdo_dispatch':
/home/.../build/lvdo/src/lvdoenc.c:43: undefined reference to `g_printerr'
collect2: error: ld returned 1 exit status
make: *** [build/lvdoenc] Error 1

GCC 4.4 is known to work so I would vote for supporting a lower version that is guaranteed.

jabbany commented 10 years ago

Also the binary files are on purpose. I want to give a precompiled version too. It is too much hassle to always recompile, so if it can be run then run the executable, otherwise if on a different archeticture, compile yourself.

jabbany commented 10 years ago

gcc-4.7 doesn't work either but somehow 4.4 works.

m13253 commented 10 years ago

I have read your GCC output. It seems that you have a misconfigured glib-2.0 library.

Precompiled binary on Linux is nonsence, except for you compiled it on a CentOS 5 so that you will not meet glibc ABI compatibility problem.

Anyway, I usually compiles LVDO with Clang. I think it is a little bit faster.

m13253 commented 10 years ago

Fix with a45a38291c535b06271c9cff89c4e41ae0156d52 Please test it.

jabbany commented 10 years ago

I have read your GCC output. It seems that you have a misconfigured glib-2.0 library.

More like all libraries. None of them are linking, not even math. gcc 4.4doesnt have this problem. I think it has to do with some flag default changing after 4.4 since I saw the solution to use gcc 4.4 online.

Clang is working with no problems. Maybe we should default to that instead.

jabbany commented 10 years ago

Please test it.

Will test tmr when I get up.

m13253 commented 10 years ago

Will test tmr when I get up.

Thanks.