The issue is that emcc main.c -o main
will emit an object file to main. This behavior is different than clang and gcc, as emcc uses the suffix to decide what to emit: if it sees -o main.js it will link to JS, and would error on the missing foo. But without a recognizable suffix it emits an object file, and then there is no link error. This can be confusing and perhaps we should make it more standard (the original reasons behind it are probably no longer relevant). Meanwhile, the workaround is to do such tests with -o main.o (specifying a suffix). - Alon On Mon, Aug 12, 2019 at 7:46 AM Mehdi Sabwat <[email protected]> wrote: > Hi, > > I am trying to cross-compile ffmpeg, and I have an issue with: > > sched_getaffinity (undefined symbol) > > eventhough the test succeeds: > Enter code here...check_func sched_getaffinity > test_ld cc > test_cc > BEGIN /tmp/ffconf.PhRaCAYu/test.c > 1 extern int sched_getaffinity(); > 2 int main(void){ sched_getaffinity(); } > END /tmp/ffconf.PhRaCAYu/test.c > emcc > -I/home/b1ue/b1ue/workdir_vlc/vlc/contrib/wasm32-unknown-emscripten/include > -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE - > D_POSIX_C_SOURCE=200112 -D_\ > XOPEN_SOURCE=600 -I/home/b1ue/b1ue/workdir_vlc/vlc/contrib/wasm32-unknown- > emscripten/include -g -O2 -s USE_PTHREADS=1 -std=c11 -fomit-frame-pointer > -c -o /tmp/ffconf.PhR\ > aCAYu/test.o /tmp/ffconf.PhRaCAYu/test.c > emcc -L/home/b1ue/b1ue/workdir_vlc/vlc/contrib/wasm32-unknown-emscripten/lib > -L/home/b1ue/b1ue/workdir_vlc/vlc/contrib/wasm32-unknown-emscripten/lib - > Wl,--as-needed -Wl,\ > -z,noexecstack -o /tmp/ffconf.PhRaCAYu/test /tmp/ffconf.PhRaCAYu/test.o > > > I have this test that is giving me weird results. > > main.c: > extern int foo(); > > //int foo(); > main() > { > foo(); > return 0; > } > > > this code compiles with: > emcc main.c -o main > > it shouldn't because this function was never defined. We would think it is > because in the first example we compiled with -c and then linked (which > works the same, ie. doesn't give any error), but I have a case where the > configure test does not use -c and fails. > > example : > configure:45053: checking for shmat > > configure:45053: emcc -o conftest -g -O2 -Werror=unknown-warning-option > -Werror=invalid-command-line-argument -D__NEED_ssize_t -s USE_PTHREADS=1 > -I/home/b1ue/vlc/vlc/co\ > ntrib/wasm32-unknown-emscripten/include -Wall -Wextra -Wsign-compare -Wundef > -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security > -Wbad-function-cast -Wwri\ > te-strings -Wmissing-prototypes -Werror-implicit-function-declaration > -Winit-self -pipe -fvisibility=hidden -fno-math-errno > -funsafe-math-optimizations -funroll-loops -\ > I/home/b1ue/vlc/vlc/contrib/wasm32-unknown-emscripten/include > -L/home/b1ue/vlc/vlc/contrib/wasm32-unknown-emscripten/lib -Wl,-z,defs > conftest.c >&5 > emscripten:warning: Wasm source map won't be usable in a browser without > --source-map-base > error: undefined symbol: shmat > warning: To disable errors for undefined symbols use `-s > ERROR_ON_UNDEFINED_SYMBOLS=0` > Error: Aborting compilation due to previous errors > shared:ERROR: '/home/b1ue/b1ue/workdir_vlc/emsdk/node/8.9.1_64bit/bin/node > /home/b1ue/b1ue/workdir_vlc/emsdk/upstream/emscripten/src/compiler.js > /tmp/tmppnm5jpew.txt /ho\ > me/b1ue/b1ue/workdir_vlc/emsdk/upstream/emscripten/src/library_pthread.js' > failed (1) > configure:45053: $? = 1 > > > thank you > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/6b383a65-2f51-4830-939f-9d7afb1285ef%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/6b383a65-2f51-4830-939f-9d7afb1285ef%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpRdJy7q-Hxtmz2Lr020GAorcBJxgA5eVbumWfEos3jBdA%40mail.gmail.com.
