Skip site navigation (1)Skip section navigation (2)
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>

index | next in thread | raw e-mail

[-- Attachment #1 --]
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

[-- Attachment #2 --]
<div dir="ltr"><div>Hi,</div><div><br></div><div>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.<br></div><div><br></div><div>root@generic:/usr/src/usr.bin/sqlite3 # ls -la<br>total 16<br>drwxr-xr-x    2 root  wheel   512 Nov 26 12:46 .<br>drwxr-xr-x  279 root  wheel  5120 Nov 26 12:46 ..<br>-rw-r--r--    1 root  wheel   295 Nov 26 16:50 Makefile<br><br>root@generic:/usr/src/usr.bin/sqlite3 # cat Makefile<br># $FreeBSD$<br><br>.include &lt;<a href="http://src.opts.mk">src.opts.mk</a>&gt;<br><br>SQLITE= ${SRCTOP}/contrib/sqlite3<br>.PATH:  ${SQLITE}<br><br>PROG= sqlite3<br>MK_MAN=no<br>SRCS= sqlite3.c<br>INCS= shell.c sqlite3.h<br><br>WARNS?= 3<br>CFLAGS+=        -I${SQLITE} \<br>                -DSQLITE_THREADSAFE=0 \<br>                -DSQLITE_OMIT_LOAD_EXTENSION<br><br>.include &lt;<a href="http://bsd.prog.mk">bsd.prog.mk</a>&gt;</div><div><br></div><div>With &#39;make&#39; command invoked, I encountered this error -&gt; ld: error: undefined symbol: main as referenced to the crt1_c.c:72<br>(/usr/src/lib/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  -O2 -pipe -fno-common -I/usr/src/contrib/sqlite3  -DSQLITE_THREADSAFE=1<br> -DSQLITE_OMIT_LOAD_EXTENSION   -fPIE -g -gz=zlib -MD  -MF.depend.sqlite3.o<br>-MTsqlite3.o -std=gnu99 -Wno-format-zero-length -fstack-protector-strong<br>-Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter<br>-Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized<br>-Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int<br>-Wno-unused-const-variable -Wno-error=unused-but-set-variable<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  -Qunused-arguments    -c<br>/usr/src/contrib/sqlite3/sqlite3.c -o sqlite3.o<br>cc -O2 -pipe -fno-common -I/usr/src/contrib/sqlite3 -DSQLITE_THREADSAFE=1<br>-DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -std=gnu99<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 -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign<br>-Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable<br>-Wno-error=unused-but-set-variable -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  -Wl,-zrelro -pie   -o<br>sqlite3.full sqlite3.o  -L/usr/obj/usr/src/arm64.aarch64/lib/libthr<br>-lpthread<br>ld: error: undefined symbol: main<br>&gt;&gt;&gt; referenced by crt1_c.c:72 (/usr/src/lib/csu/aarch64/crt1_c.c:72)<br>&gt;&gt;&gt;               /usr/lib/Scrt1.o:(__start)<br>cc: error: 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<br><br>Not sure if I missed something or if something goes wrong with my Makefile<br>content construction. I basically followed here<br><a href="https://www.sqlite.org/howtocompile.html">https://www.sqlite.org/howtocompile.html</a>; and then proved the source to<br>compile successfully.</div><div><br></div><div>root@generic:/usr/src/contrib/sqlite3 # pwd<br>/usr/src/contrib/sqlite3<br>root@generic:/usr/src/contrib/sqlite3 # ls -lah<br>total 11364<br>drwxr-xr-x   3 root  wheel   1.0K Oct 27 08:06 .<br>drwxr-xr-x  89 root  wheel   2.0K Nov 26 13:01 ..<br>-rw-r--r--   1 root  wheel    15K Oct 27 08:06 INSTALL<br>-rw-r--r--   1 root  wheel   729B Oct 27 08:06 Makefile.am<br>-rw-r--r--   1 root  wheel   547B Oct 27 08:06 Makefile.fallback<br>-rw-r--r--   1 root  wheel    37K Oct 27 08:06 Makefile.in<br>-rw-r--r--   1 root  wheel    28K Oct 27 08:06 Makefile.msc<br>-rw-r--r--   1 root  wheel   3.5K Oct 27 08:06 README.txt<br>-rw-r--r--   1 root  wheel   7.1K Oct 27 08:06 Replace.cs<br>-rw-r--r--   1 root  wheel   365K Oct 27 08:06 aclocal.m4<br>-rwxr-xr-x   1 root  wheel   7.2K Oct 27 08:06 compile<br>-rwxr-xr-x   1 root  wheel    48K Oct 27 08:06 config.guess<br>-rwxr-xr-x   1 root  wheel    35K Oct 27 08:06 config.sub<br>-rwxr-xr-x   1 root  wheel   485K Oct 27 08:06 configure<br>-rw-r--r--   1 root  wheel   8.5K Oct 27 08:06 <a href="http://configure.ac">configure.ac</a><br>-rwxr-xr-x   1 root  wheel    23K Oct 27 08:06 depcomp<br>-rwxr-xr-x   1 root  wheel    15K Oct 27 08:06 install-sh<br>-rwxr-xr-x   1 root  wheel   320K Oct 27 08:06 ltmain.sh<br>-rwxr-xr-x   1 root  wheel   6.7K Oct 27 08:06 missing<br>-rw-r--r--   1 root  wheel   717K Oct 27 08:06 shell.c<br>-rw-r--r--   1 root  wheel   8.7K Oct 27 08:06 sqlite3.1<br>-rw-r--r--   1 root  wheel   8.2M Oct 27 08:06 sqlite3.c<br>-rw-r--r--   1 root  wheel   599K Oct 27 08:06 sqlite3.h<br>-rw-r--r--   1 root  wheel   267B Oct 27 08:06 <a href="http://sqlite3.pc.in">sqlite3.pc.in</a><br>-rw-r--r--   1 root  wheel   1.9K Oct 27 08:06 sqlite3.rc<br>-rw-r--r--   1 root  wheel    36K Oct 27 08:06 sqlite3ext.h<br>-rw-r--r--   1 root  wheel    78B Oct 27 08:06 sqlite3rc.h<br>drwxr-xr-x   6 root  wheel   512B Oct 27 08:06 tea<br><br>root@generic:/usr/src/contrib/sqlite3 # cc -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION shell.c sqlite3.c -o sqlite3</div><div><br></div><div>So, the above compilation builds the source successfully.<br></div><div><br>This time I&#39;ve manually invoked the first compilation command and it works just fine as seen below.<br><br>root@generic:/usr/src/contrib/sqlite3 # cc  -O2 -pipe -fno-common<br>-I/usr/src/contrib/sqlite3  -DSQLITE_THREADSAFE=0<br> -DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -MD  -MF.depend.sqlite3.o<br>-MTsqlite3.o -std=gnu99 -Wno-format-zero-length -fstack-protector-strong<br>-Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter<br>-Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized<br>-Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int<br>-Wno-unused-const-variable -Wno-error=unused-but-set-variable<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  -Qunused-arguments -c<br>/usr/src/contrib/sqlite3/sqlite3.c -o sqlite3.o<br><br>While the second compilation command below breaks having the same manifested error.<br><br>cc -O2 -pipe -fno-common -I/usr/src/contrib/sqlite3 -DSQLITE_THREADSAFE=1<br>-DSQLITE_OMIT_LOAD_EXTENSION -fPIE -g -gz=zlib -std=gnu99<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 -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign<br>-Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable<br>-Wno-error=unused-but-set-variable -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  -Wl,-zrelro -pie   -o<br>sqlite3.full sqlite3.o  -L/usr/obj/usr/src/arm64.aarch64/lib/libthr<br>-lpthread<br>ld: error: undefined symbol: main<br>&gt;&gt;&gt; referenced by crt1_c.c:72 (/usr/src/lib/csu/aarch64/crt1_c.c:72)<br>&gt;&gt;&gt;               /usr/lib/Scrt1.o:(__start)<br>cc: error: 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</div><div><br></div><div>Any idea of this problem? I posted this at freebsd-database ML however, I&#39;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.<br></div><div><br></div><div>Thanks 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>
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJFbk7HSVXNTdeq14ExCT5TkQp5a%2BFu686_EUQER62ENVupPdA>