Re: ld error (undefined symbol) while compiling sqlite3
- In reply to: Yuri : "Re: ld error (undefined symbol) while compiling sqlite3"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 26 Nov 2022 16:20:43 UTC
On Sat, Nov 26, 2022 at 11:53 PM Yuri <yuri@aetern.org> wrote: > Archimedes Gaviola wrote: > > Hi, > > > > For some reason, I am compiling sqlite3 from the > > /usr/src/contrib/sqlite3 source using > > FreeBSD-14.0-CURRENT-arm64-aarch64-RPI-20221027-769b884e2e2-258837. I > > created a /usr/src/usr.bin/sqlite3 directory and created a Makefile file > > with content referred to the source. > > > > root@generic:/usr/src/usr.bin/sqlite3 # ls -la > > total 16 > > drwxr-xr-x 2 root wheel 512 Nov 26 12:46 . > > drwxr-xr-x 279 root wheel 5120 Nov 26 12:46 .. > > -rw-r--r-- 1 root wheel 295 Nov 26 16:50 Makefile > > > > root@generic:/usr/src/usr.bin/sqlite3 # cat Makefile > > # $FreeBSD$ > > > > .include <src.opts.mk> > > > > SQLITE= ${SRCTOP}/contrib/sqlite3 > > .PATH: ${SQLITE} > > > > PROG= sqlite3 > > MK_MAN=no > > SRCS= sqlite3.c > > SRCS= shell.c sqlite3.c > > > INCS= shell.c sqlite3.h > > Remove? > > > > > WARNS?= 3 > > WARNS?= 2 worked for me. > Awesome! It works now. Thanks a lot for figuring-out Yuri! > > > CFLAGS+= -I${SQLITE} \ > > -DSQLITE_THREADSAFE=0 \ > > -DSQLITE_OMIT_LOAD_EXTENSION > > > > .include <bsd.prog.mk> > > > > With 'make' command invoked, I encountered this error -> ld: error: > > undefined symbol: main as referenced to the crt1_c.c:72 > > (/usr/src/lib/csu/aarch64/crt1_c.c:72) file. See below details for the > > actual error. > > > > root@generic:/usr/src/usr.bin/sqlite3 # make > > cc -O2 -pipe -fno-common -I/usr/src/contrib/sqlite3 > -DSQLITE_THREADSAFE=1 > > -DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -MD > -MF.depend.sqlite3.o > > -MTsqlite3.o -std=gnu99 -Wno-format-zero-length -fstack-protector-strong > > -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter > > -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Wno-uninitialized > > -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int > > -Wno-unused-const-variable -Wno-error=unused-but-set-variable > > -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality > > -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef > > -Wno-address-of-packed-member -Qunused-arguments -c > > /usr/src/contrib/sqlite3/sqlite3.c -o sqlite3.o > > cc -O2 -pipe -fno-common -I/usr/src/contrib/sqlite3 -DSQLITE_THREADSAFE=1 > > -DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -std=gnu99 > > -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers -Werror > > -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes > > -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign > > -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable > > -Wno-error=unused-but-set-variable -Wno-tautological-compare > > -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function > > -Wno-enum-conversion -Wno-unused-local-typedef > > -Wno-address-of-packed-member -Qunused-arguments -Wl,-zrelro -pie -o > > sqlite3.full sqlite3.o -L/usr/obj/usr/src/arm64.aarch64/lib/libthr > > -lpthread > > ld: error: undefined symbol: main > >>>> referenced by crt1_c.c:72 (/usr/src/lib/csu/aarch64/crt1_c.c:72) > >>>> /usr/lib/Scrt1.o:(__start) > > cc: error: linker command failed with exit code 1 (use -v to see > invocation) > > *** Error code 1 > > > > Stop. > > make: stopped in /usr/src/usr.bin/sqlite3 > > > > Not sure if I missed something or if something goes wrong with my > Makefile > > content construction. I basically followed here > > https://www.sqlite.org/howtocompile.html > > <https://www.sqlite.org/howtocompile.html> and then proved the source to > > compile successfully. > > > > root@generic:/usr/src/contrib/sqlite3 # pwd > > /usr/src/contrib/sqlite3 > > root@generic:/usr/src/contrib/sqlite3 # ls -lah > > total 11364 > > drwxr-xr-x 3 root wheel 1.0K Oct 27 08:06 . > > drwxr-xr-x 89 root wheel 2.0K Nov 26 13:01 .. > > -rw-r--r-- 1 root wheel 15K Oct 27 08:06 INSTALL > > -rw-r--r-- 1 root wheel 729B Oct 27 08:06 Makefile.am > > -rw-r--r-- 1 root wheel 547B Oct 27 08:06 Makefile.fallback > > -rw-r--r-- 1 root wheel 37K Oct 27 08:06 Makefile.in > > -rw-r--r-- 1 root wheel 28K Oct 27 08:06 Makefile.msc > > -rw-r--r-- 1 root wheel 3.5K Oct 27 08:06 README.txt > > -rw-r--r-- 1 root wheel 7.1K Oct 27 08:06 Replace.cs > > -rw-r--r-- 1 root wheel 365K Oct 27 08:06 aclocal.m4 > > -rwxr-xr-x 1 root wheel 7.2K Oct 27 08:06 compile > > -rwxr-xr-x 1 root wheel 48K Oct 27 08:06 config.guess > > -rwxr-xr-x 1 root wheel 35K Oct 27 08:06 config.sub > > -rwxr-xr-x 1 root wheel 485K Oct 27 08:06 configure > > -rw-r--r-- 1 root wheel 8.5K Oct 27 08:06 configure.ac > > <http://configure.ac> > > -rwxr-xr-x 1 root wheel 23K Oct 27 08:06 depcomp > > -rwxr-xr-x 1 root wheel 15K Oct 27 08:06 install-sh > > -rwxr-xr-x 1 root wheel 320K Oct 27 08:06 ltmain.sh > > -rwxr-xr-x 1 root wheel 6.7K Oct 27 08:06 missing > > -rw-r--r-- 1 root wheel 717K Oct 27 08:06 shell.c > > -rw-r--r-- 1 root wheel 8.7K Oct 27 08:06 sqlite3.1 > > -rw-r--r-- 1 root wheel 8.2M Oct 27 08:06 sqlite3.c > > -rw-r--r-- 1 root wheel 599K Oct 27 08:06 sqlite3.h > > -rw-r--r-- 1 root wheel 267B Oct 27 08:06 sqlite3.pc.in > > <http://sqlite3.pc.in> > > -rw-r--r-- 1 root wheel 1.9K Oct 27 08:06 sqlite3.rc > > -rw-r--r-- 1 root wheel 36K Oct 27 08:06 sqlite3ext.h > > -rw-r--r-- 1 root wheel 78B Oct 27 08:06 sqlite3rc.h > > drwxr-xr-x 6 root wheel 512B Oct 27 08:06 tea > > > > root@generic:/usr/src/contrib/sqlite3 # cc -DSQLITE_THREADSAFE=0 > > -DSQLITE_OMIT_LOAD_EXTENSION shell.c sqlite3.c -o sqlite3 > > > > So, the above compilation builds the source successfully. > > > > This time I've manually invoked the first compilation command and it > > works just fine as seen below. > > > > root@generic:/usr/src/contrib/sqlite3 # cc -O2 -pipe -fno-common > > -I/usr/src/contrib/sqlite3 -DSQLITE_THREADSAFE=0 > > -DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -MD -MF.depend.sqlite3.o > > -MTsqlite3.o -std=gnu99 -Wno-format-zero-length -fstack-protector-strong > > -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter > > -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Wno-uninitialized > > -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int > > -Wno-unused-const-variable -Wno-error=unused-but-set-variable > > -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality > > -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef > > -Wno-address-of-packed-member -Qunused-arguments -c > > /usr/src/contrib/sqlite3/sqlite3.c -o sqlite3.o > > > > While the second compilation command below breaks having the same > > manifested error. > > > > cc -O2 -pipe -fno-common -I/usr/src/contrib/sqlite3 -DSQLITE_THREADSAFE=1 > > -DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -std=gnu99 > > -Wno-format-zero-length -fstack-protector-strong -Wsystem-headers -Werror > > -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes > > -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign > > -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable > > -Wno-error=unused-but-set-variable -Wno-tautological-compare > > -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function > > -Wno-enum-conversion -Wno-unused-local-typedef > > -Wno-address-of-packed-member -Qunused-arguments -Wl,-zrelro -pie -o > > sqlite3.full sqlite3.o -L/usr/obj/usr/src/arm64.aarch64/lib/libthr > > -lpthread > > ld: error: undefined symbol: main > >>>> referenced by crt1_c.c:72 (/usr/src/lib/csu/aarch64/crt1_c.c:72) > >>>> /usr/lib/Scrt1.o:(__start) > > cc: error: linker command failed with exit code 1 (use -v to see > invocation) > > *** Error code 1 > > > > Stop. > > make: stopped in /usr/src/usr.bin/sqlite3 > > > > Any idea of this problem? I posted this at freebsd-database ML however, > > I'm thinking that the problem might not be related to SQLite3 > > perspective as I have compiled the source without any problem at all so, > > I share it here. > > > > Thanks and best regards, > > Archimedes > > > > > > > > > > > > > >