Date: Sat, 26 Nov 2022 23:10:58 +0800 From: Archimedes Gaviola <archimedes.gaviola@gmail.com> To: freebsd-current <freebsd-current@freebsd.org> Subject: ld error (undefined symbol) while compiling sqlite3 Message-ID: <CAJFbk7HSVXNTdeq14ExCT5TkQp5a%2BFu686_EUQER62ENVupPdA@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--0000000000005cf70e05ee610bad Content-Type: text/plain; charset="UTF-8" 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 INCS= shell.c sqlite3.h WARNS?= 3 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 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 -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 -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 --0000000000005cf70e05ee610bad Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Hi,</div><div><br></div><div>For some reason, I am co= mpiling sqlite3 from the /usr/src/contrib/sqlite3 source using FreeBSD-14.0= -CURRENT-arm64-aarch64-RPI-20221027-769b884e2e2-258837. I created a /usr/sr= c/usr.bin/sqlite3 directory and created a Makefile file with content referr= ed to the source.<br></div><div><br></div><div>root@generic:/usr/src/usr.bi= n/sqlite3 # ls -la<br>total 16<br>drwxr-xr-x =C2=A0 =C2=A02 root =C2=A0whee= l =C2=A0 512 Nov 26 12:46 .<br>drwxr-xr-x =C2=A0279 root =C2=A0wheel =C2=A0= 5120 Nov 26 12:46 ..<br>-rw-r--r-- =C2=A0 =C2=A01 root =C2=A0wheel =C2=A0 2= 95 Nov 26 16:50 Makefile<br><br>root@generic:/usr/src/usr.bin/sqlite3 # cat= Makefile<br># $FreeBSD$<br><br>.include <<a href=3D"http://src.opts.mk"= >src.opts.mk</a>><br><br>SQLITE=3D ${SRCTOP}/contrib/sqlite3<br>.PATH: = =C2=A0${SQLITE}<br><br>PROG=3D sqlite3<br>MK_MAN=3Dno<br>SRCS=3D sqlite3.c<= br>INCS=3D shell.c sqlite3.h<br><br>WARNS?=3D 3<br>CFLAGS+=3D =C2=A0 =C2=A0= =C2=A0 =C2=A0-I${SQLITE} \<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 -DSQLITE_THREADSAFE=3D0 \<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 -DSQLITE_OMIT_LOAD_EXTENSION<br><br>.include <<= a href=3D"http://bsd.prog.mk">bsd.prog.mk</a>></div><div><br></div><div>= With 'make' command invoked, I encountered this error -> ld: err= or: undefined symbol: main as referenced to the crt1_c.c:72<br>(/usr/src/li= b/csu/aarch64/crt1_c.c:72) file. See below details for the actual error.<br= ><br>root@generic:/usr/src/usr.bin/sqlite3 # make<br>cc =C2=A0-O2 -pipe -fn= o-common -I/usr/src/contrib/sqlite3 =C2=A0-DSQLITE_THREADSAFE=3D1<br>=C2=A0= -DSQLITE_OMIT_LOAD_EXTENSION =C2=A0 -fPIE -g -gz=3Dzlib -MD =C2=A0-MF.depen= d.sqlite3.o<br>-MTsqlite3.o -std=3Dgnu99 -Wno-format-zero-length -fstack-pr= otector-strong<br>-Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-un= used-parameter<br>-Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith = -Wno-uninitialized<br>-Wno-pointer-sign -Wno-empty-body -Wno-string-plus-in= t<br>-Wno-unused-const-variable -Wno-error=3Dunused-but-set-variable<br>-Wn= o-tautological-compare -Wno-unused-value -Wno-parentheses-equality<br>-Wno-= unused-function -Wno-enum-conversion -Wno-unused-local-typedef<br>-Wno-addr= ess-of-packed-member =C2=A0-Qunused-arguments =C2=A0 =C2=A0-c<br>/usr/src/c= ontrib/sqlite3/sqlite3.c -o sqlite3.o<br>cc -O2 -pipe -fno-common -I/usr/sr= c/contrib/sqlite3 -DSQLITE_THREADSAFE=3D1<br>-DSQLITE_OMIT_LOAD_EXTENSION -= fPIE -g -gz=3Dzlib -std=3Dgnu99<br>-Wno-format-zero-length -fstack-protecto= r-strong -Wsystem-headers -Werror<br>-Wall -Wno-format-y2k -W -Wno-unused-p= arameter -Wstrict-prototypes<br>-Wmissing-prototypes -Wpointer-arith -Wno-u= ninitialized -Wno-pointer-sign<br>-Wno-empty-body -Wno-string-plus-int -Wno= -unused-const-variable<br>-Wno-error=3Dunused-but-set-variable -Wno-tautolo= gical-compare<br>-Wno-unused-value -Wno-parentheses-equality -Wno-unused-fu= nction<br>-Wno-enum-conversion -Wno-unused-local-typedef<br>-Wno-address-of= -packed-member -Qunused-arguments =C2=A0-Wl,-zrelro -pie =C2=A0 -o<br>sqlit= e3.full sqlite3.o =C2=A0-L/usr/obj/usr/src/arm64.aarch64/lib/libthr<br>-lpt= hread<br>ld: error: undefined symbol: main<br>>>> referenced by cr= t1_c.c:72 (/usr/src/lib/csu/aarch64/crt1_c.c:72)<br>>>> =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /usr/lib/Scrt1.o:(__start)<br>cc: er= ror: linker command failed with exit code 1 (use -v to see invocation)<br>*= ** Error code 1<br><br>Stop.<br>make: stopped in /usr/src/usr.bin/sqlite3<b= r><br>Not sure if I missed something or if something goes wrong with my Mak= efile<br>content construction. I basically followed here<br><a href=3D"http= s://www.sqlite.org/howtocompile.html">https://www.sqlite.org/howtocompile.h= tml</a> and then proved the source to<br>compile successfully.</div><div><b= r></div><div>root@generic:/usr/src/contrib/sqlite3 # pwd<br>/usr/src/contri= b/sqlite3<br>root@generic:/usr/src/contrib/sqlite3 # ls -lah<br>total 11364= <br>drwxr-xr-x =C2=A0 3 root =C2=A0wheel =C2=A0 1.0K Oct 27 08:06 .<br>drwx= r-xr-x =C2=A089 root =C2=A0wheel =C2=A0 2.0K Nov 26 13:01 ..<br>-rw-r--r-- = =C2=A0 1 root =C2=A0wheel =C2=A0 =C2=A015K Oct 27 08:06 INSTALL<br>-rw-r--r= -- =C2=A0 1 root =C2=A0wheel =C2=A0 729B Oct 27 08:06 Makefile.am<br>-rw-r-= -r-- =C2=A0 1 root =C2=A0wheel =C2=A0 547B Oct 27 08:06 Makefile.fallback<b= r>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 =C2=A037K Oct 27 08:06 Makefi= le.in<br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 =C2=A028K Oct 27 08:06= Makefile.msc<br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 3.5K Oct 27 08= :06 README.txt<br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 7.1K Oct 27 0= 8:06 Replace.cs<br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 365K Oct 27 = 08:06 aclocal.m4<br>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 7.2K Oct 27= 08:06 compile<br>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 =C2=A048K Oct= 27 08:06 config.guess<br>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 =C2= =A035K Oct 27 08:06 config.sub<br>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2= =A0 485K Oct 27 08:06 configure<br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2= =A0 8.5K Oct 27 08:06 <a href=3D"http://configure.ac">configure.ac</a><br>-= rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 =C2=A023K Oct 27 08:06 depcomp<b= r>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 =C2=A015K Oct 27 08:06 instal= l-sh<br>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 320K Oct 27 08:06 ltmai= n.sh<br>-rwxr-xr-x =C2=A0 1 root =C2=A0wheel =C2=A0 6.7K Oct 27 08:06 missi= ng<br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 717K Oct 27 08:06 shell.c= <br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 8.7K Oct 27 08:06 sqlite3.1= <br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 8.2M Oct 27 08:06 sqlite3.c= <br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 599K Oct 27 08:06 sqlite3.h= <br>-rw-r--r-- =C2=A0 1 root =C2=A0wheel =C2=A0 267B Oct 27 08:06 <a href= =3D"http://sqlite3.pc.in">sqlite3.pc.in</a><br>-rw-r--r-- =C2=A0 1 root =C2= =A0wheel =C2=A0 1.9K Oct 27 08:06 sqlite3.rc<br>-rw-r--r-- =C2=A0 1 root = =C2=A0wheel =C2=A0 =C2=A036K Oct 27 08:06 sqlite3ext.h<br>-rw-r--r-- =C2=A0= 1 root =C2=A0wheel =C2=A0 =C2=A078B Oct 27 08:06 sqlite3rc.h<br>drwxr-xr-x= =C2=A0 6 root =C2=A0wheel =C2=A0 512B Oct 27 08:06 tea<br><br>root@generic= :/usr/src/contrib/sqlite3 # cc -DSQLITE_THREADSAFE=3D0 -DSQLITE_OMIT_LOAD_E= XTENSION shell.c sqlite3.c -o sqlite3</div><div><br></div><div>So, the abov= e compilation builds the source successfully.<br></div><div><br>This time I= 've manually invoked the first compilation command and it works just fi= ne as seen below.<br><br>root@generic:/usr/src/contrib/sqlite3 # cc =C2=A0-= O2 -pipe -fno-common<br>-I/usr/src/contrib/sqlite3 =C2=A0-DSQLITE_THREADSAF= E=3D0<br>=C2=A0-DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=3Dzlib -MD =C2=A0-= MF.depend.sqlite3.o<br>-MTsqlite3.o -std=3Dgnu99 -Wno-format-zero-length -f= stack-protector-strong<br>-Wsystem-headers -Werror -Wall -Wno-format-y2k -W= -Wno-unused-parameter<br>-Wstrict-prototypes -Wmissing-prototypes -Wpointe= r-arith -Wno-uninitialized<br>-Wno-pointer-sign -Wno-empty-body -Wno-string= -plus-int<br>-Wno-unused-const-variable -Wno-error=3Dunused-but-set-variabl= e<br>-Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality<= br>-Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef<br>-= Wno-address-of-packed-member =C2=A0-Qunused-arguments -c<br>/usr/src/contri= b/sqlite3/sqlite3.c -o sqlite3.o<br><br>While the second compilation comman= d below breaks having the same manifested error.<br><br>cc -O2 -pipe -fno-c= ommon -I/usr/src/contrib/sqlite3 -DSQLITE_THREADSAFE=3D1<br>-DSQLITE_OMIT_L= OAD_EXTENSION -fPIE -g -gz=3Dzlib -std=3Dgnu99<br>-Wno-format-zero-length -= fstack-protector-strong -Wsystem-headers -Werror<br>-Wall -Wno-format-y2k -= W -Wno-unused-parameter -Wstrict-prototypes<br>-Wmissing-prototypes -Wpoint= er-arith -Wno-uninitialized -Wno-pointer-sign<br>-Wno-empty-body -Wno-strin= g-plus-int -Wno-unused-const-variable<br>-Wno-error=3Dunused-but-set-variab= le -Wno-tautological-compare<br>-Wno-unused-value -Wno-parentheses-equality= -Wno-unused-function<br>-Wno-enum-conversion -Wno-unused-local-typedef<br>= -Wno-address-of-packed-member -Qunused-arguments =C2=A0-Wl,-zrelro -pie =C2= =A0 -o<br>sqlite3.full sqlite3.o =C2=A0-L/usr/obj/usr/src/arm64.aarch64/lib= /libthr<br>-lpthread<br>ld: error: undefined symbol: main<br>>>> r= eferenced by crt1_c.c:72 (/usr/src/lib/csu/aarch64/crt1_c.c:72)<br>>>= > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /usr/lib/Scrt1.o:(__s= tart)<br>cc: error: linker command failed with exit code 1 (use -v to see i= nvocation)<br>*** Error code 1<br><br>Stop.<br>make: stopped in /usr/src/us= r.bin/sqlite3</div><div><br></div><div>Any idea of this problem? I posted t= his at freebsd-database ML however, I'm thinking that the problem might= not be related to SQLite3 perspective as I have compiled the source withou= t any problem at all so, I share it here.<br></div><div><br></div><div>Than= ks and best regards,</div><div>Archimedes <br></div><div><br></div><div><br= ></div><div><br></div><div><br></div><div><br></div><div><br></div></div> --0000000000005cf70e05ee610bad--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJFbk7HSVXNTdeq14ExCT5TkQp5a%2BFu686_EUQER62ENVupPdA>