Thanks for the feedback, for a long time this UNABLENESS to create really static binaries has been bugging me.
Who can shed light on how to create a static ELF, anyone?
I used QB64 2.0.2, today for the first time I tried the latest QB64PE 3.9.1, this is my way to compile without the IDE:
Currently, I made a big move, buying the most powerful (benchmarkwise) machinette in my sandbox, callsign 'Dzvertcheto':
- Thinkpad L490;
- CPU i7-8565U 4cores/8threads, 4.6GHz single core max boost;
- FHD 1920x1080;
- 64GB DDR4 2400MHz;
- SSD 4TB nvme;
- SSD 2TB nvme;
- Dual boot, Fedora 39, Windows 10.
At the moment, with all my optimizations the max scroll speed in FHD mode is 227 FPS (160 FPS, with v.2.0.2):
Was able to run the v2.0.2 binary on 4K, the Frames-Per-Second were mere 28.
Surely with the new ELF (using the exact compile line from the top of this post), the frames will hit 32+, which is one line per second (the font is 32 pixels high):
Wanna salute all the QB64 contributors, QB64PE 3.9.1 proves a great leap for ... QB community, cheers.
Who can shed light on how to create a static ELF, anyone?
I used QB64 2.0.2, today for the first time I tried the latest QB64PE 3.9.1, this is my way to compile without the IDE:
Code: (Select All)
' How to compile outside the IDE, QB64-PE 3.9.1 [[
'[sanmayce@dzvertcheto Trimasakari_benchmark_r3_sourcecode_ELF_EXE]$ /home/sanmayce/qb64/3.9.1/qb64pe -x -f:ExtraCppFlags="-O3 -ffast-math -msse4.2 -maes" trimasakari.bas
'QB64-PE Compiler V3.9.1-UNKNOWN
'Beginning C++ output from QB64 code...
'[..................................................] 100%
'Compiling C++ code into executable...
'Output: /dz_WD_SN740/z/Trimasakari_benchmark_r3_sourcecode_ELF_EXE/trimasakari
'[sanmayce@dzvertcheto Trimasakari_benchmark_r3_sourcecode_ELF_EXE]$ readelf -d ./trimasakari | grep 'NEEDED'
' 0x0000000000000001 (NEEDED) Shared library: [libGL.so.1]
' 0x0000000000000001 (NEEDED) Shared library: [libGLU.so.1]
' 0x0000000000000001 (NEEDED) Shared library: [libX11.so.6]
' 0x0000000000000001 (NEEDED) Shared library: [libasound.so.2]
' 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
' 0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
' 0x0000000000000001 (NEEDED) Shared library: [libmvec.so.1]
' 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
' 0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
'[sanmayce@dzvertcheto Trimasakari_benchmark_r3_sourcecode_ELF_EXE]$ ldd ./trimasakari
' linux-vdso.so.1 (0x00007ffd04384000)
' libGL.so.1 => /lib64/libGL.so.1 (0x00007ffb43c18000)
' libGLU.so.1 => /lib64/libGLU.so.1 (0x00007ffb43bbf000)
' libX11.so.6 => /lib64/libX11.so.6 (0x00007ffb43a78000)
' libasound.so.2 => /lib64/libasound.so.2 (0x00007ffb43964000)
' libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffb43600000)
' libm.so.6 => /lib64/libm.so.6 (0x00007ffb43883000)
' libmvec.so.1 => /lib64/libmvec.so.1 (0x00007ffb43506000)
' libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffb4385d000)
' libc.so.6 => /lib64/libc.so.6 (0x00007ffb43324000)
' libGLX.so.0 => /lib64/libGLX.so.0 (0x00007ffb432f1000)
' libXext.so.6 => /lib64/libXext.so.6 (0x00007ffb432dd000)
' libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007ffb43225000)
' libOpenGL.so.0 => /lib64/libOpenGL.so.0 (0x00007ffb431fa000)
' libxcb.so.1 => /lib64/libxcb.so.1 (0x00007ffb431cf000)
' /lib64/ld-linux-x86-64.so.2 (0x00007ffb43cc9000)
' libXau.so.6 => /lib64/libXau.so.6 (0x00007ffb43855000)
'[sanmayce@dzvertcheto Trimasakari_benchmark_r3_sourcecode_ELF_EXE]$ cat /home/sanmayce/qb64/3.9.1/internal/temp/compilelog.txt
'g++ -O3 -ffast-math -msse4.2 -maes -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_IMAGE_CODEC -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE -DDEPENDENCY_AUDIO_MINIAUDIO internal/c/qbx.cpp -c -o internal/c/qbx.o
'objcopy -Ibinary -Oelf64-x86-64 -Bi386:x86-64 internal/temp/data.bin internal/temp/data.o
'g++ -O3 -ffast-math -msse4.2 -maes -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_IMAGE_CODEC -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE -DDEPENDENCY_AUDIO_MINIAUDIO ./internal/c/libqb_make_010000001.o ./internal/c/qbx.o ./internal/temp/data.o -o "/dz_WD_SN740/z/Trimasakari_benchmark_r3_sourcecode_ELF_EXE/trimasakari" ./internal/c/libqb/src/threading.o ./internal/c/libqb/src/buffer.o ./internal/c/libqb/src/filepath.o ./internal/c/libqb/src/datetime.o ./internal/c/libqb/src/rounding.o ./internal/c/libqb/src/http-stub.o ./internal/c/libqb/src/threading-posix.o ./internal/c/libqb/src/glut-main-thread.o ./internal/c/libqb/src/glut-message.o ./internal/c/libqb/src/glut-msg-queue.o ./internal/c/parts/video/image/image.o ./internal/c/parts/gui/tinyfiledialogs.o ./internal/c/parts/gui/gui.o ./internal/c/parts/video/font/stub_font.o ./internal/c/parts/audio/audio.o ./internal/c/parts/audio/miniaudio_impl.o ./internal/c/parts/audio/extras/mod_ma_vtable.o ./internal/c/parts/audio/extras/radv2_ma_vtable.o ./internal/c/parts/audio/extras/hively_ma_vtable.o ./internal/c/parts/audio/extras/qoa_ma_vtable.o ./internal/c/parts/audio/extras/hivelytracker/hvl_replay.o ./internal/c/parts/audio/extras/libxmp-lite.a ./internal/c/parts/audio/extras/midi_ma_vtable_stub.o ./internal/c/parts/core/src.a -lGL -lGLU -lX11 -lpthread -ldl -lrt -lm -lasound
'objcopy --only-keep-debug "/dz_WD_SN740/z/Trimasakari_benchmark_r3_sourcecode_ELF_EXE/trimasakari" "./internal/temp/trimasakari.sym"
'objcopy --strip-unneeded "/dz_WD_SN740/z/Trimasakari_benchmark_r3_sourcecode_ELF_EXE/trimasakari"
'[sanmayce@dzvertcheto Trimasakari_benchmark_r3_sourcecode_ELF_EXE]$
' How to compile outside the IDE, QB64-PE 3.9.1 ]]
Currently, I made a big move, buying the most powerful (benchmarkwise) machinette in my sandbox, callsign 'Dzvertcheto':
- Thinkpad L490;
- CPU i7-8565U 4cores/8threads, 4.6GHz single core max boost;
- FHD 1920x1080;
- 64GB DDR4 2400MHz;
- SSD 4TB nvme;
- SSD 2TB nvme;
- Dual boot, Fedora 39, Windows 10.
At the moment, with all my optimizations the max scroll speed in FHD mode is 227 FPS (160 FPS, with v.2.0.2):
Was able to run the v2.0.2 binary on 4K, the Frames-Per-Second were mere 28.
Surely with the new ELF (using the exact compile line from the top of this post), the frames will hit 32+, which is one line per second (the font is 32 pixels high):
Wanna salute all the QB64 contributors, QB64PE 3.9.1 proves a great leap for ... QB community, cheers.
"He learns not to learn and reverts to what the masses pass by."