Suckless - "Do one thing and do it well"


Nice projects, bad license. I think you need duplication of effort to have competition, which in turn makes for evolution.
This spawns off, if successful, offspring that is not, while still in competition.

Notwithstanding the license, it is possible for humans to make whole systems by design if they are sufficiently simple.
 
yeah, i'm thinking i probably just want some sort of "distributed overlay", which sits on top of a running linux, but shards data and can run more intensive programs elsewhere, so that i still have access to various linux programs.

but i can appreciate the humor of plan 9.
 
Hi all !

@Gremblo and @JDTAY : I'm trying to compile tcc 0.9.27 with @ptitSeb 's latest beta Code::Blocks (GCC 7.2). Compilation itself went fine, but "make test" fails with the following error:
Code:
/media/Pandora1/dev/tcc-0.9.27$ make test
make -C tests
make[1]: Entering directory '/media/Pandora1/dev/tcc-0.9.27/tests'
------------ hello-exe ------------
../tcc -B.. -I../include -I.. -I.. ../examples/ex1.c -o hello && ./hello || (set -x; ../tcc -vv; ldd ../tcc; exit 1)
tcc: error: file 'crt1.o' not found
tcc: error: file 'crti.o' not found
tcc: error: file 'crtn.o' not found
+ ../tcc -vv
tcc version 0.9.27 (ARM Linux)
install: /mnt/utmp/codeblocks/usr//lib/tcc
include:
  /mnt/utmp/codeblocks/usr//lib/tcc/include
  /usr/local/include
  /usr/include
libraries:
  /usr/lib
  /lib
  /usr/local/lib
libtcc1:
  /mnt/utmp/codeblocks/usr//lib/tcc/libtcc1.a
crt:
  /usr/lib
elfinterp:
  /lib/ld-linux.so.2
+ ldd ../tcc
	libm.so.6 => /lib/libm.so.6 (0x40069000)
	libdl.so.2 => /mnt/utmp/codeblocks/usr/lib/libdl.so.2 (0x400dc000)
	libc.so.6 => /lib/libc.so.6 (0x401ad000)
	/lib/ld-linux.so.3 (0x40043000)
+ exit 1
make[1]: *** [Makefile:66: hello-exe] Error 1
make[1]: Leaving directory '/media/Pandora1/dev/tcc-0.9.27/tests'
make: *** [Makefile:347: test] Error 2

Any idea what I'm doing wrong ?

@OppositeDay : count me in for anything Plan9 :)

Cheers, Magic Sam
 
Hi all !

@Gremblo and @JDTAY : I'm trying to compile tcc 0.9.27 with @ptitSeb 's latest beta Code::Blocks (GCC 7.2). Compilation itself went fine, but "make test" fails with the following error:
Code:
/media/Pandora1/dev/tcc-0.9.27$ make test
make -C tests
make[1]: Entering directory '/media/Pandora1/dev/tcc-0.9.27/tests'
------------ hello-exe ------------
../tcc -B.. -I../include -I.. -I.. ../examples/ex1.c -o hello && ./hello || (set -x; ../tcc -vv; ldd ../tcc; exit 1)
tcc: error: file 'crt1.o' not found
tcc: error: file 'crti.o' not found
tcc: error: file 'crtn.o' not found
+ ../tcc -vv
tcc version 0.9.27 (ARM Linux)
install: /mnt/utmp/codeblocks/usr//lib/tcc
include:
  /mnt/utmp/codeblocks/usr//lib/tcc/include
  /usr/local/include
  /usr/include
libraries:
  /usr/lib
  /lib
  /usr/local/lib
libtcc1:
  /mnt/utmp/codeblocks/usr//lib/tcc/libtcc1.a
crt:
  /usr/lib
elfinterp:
  /lib/ld-linux.so.2
+ ldd ../tcc
    libm.so.6 => /lib/libm.so.6 (0x40069000)
    libdl.so.2 => /mnt/utmp/codeblocks/usr/lib/libdl.so.2 (0x400dc000)
    libc.so.6 => /lib/libc.so.6 (0x401ad000)
    /lib/ld-linux.so.3 (0x40043000)
+ exit 1
make[1]: *** [Makefile:66: hello-exe] Error 1
make[1]: Leaving directory '/media/Pandora1/dev/tcc-0.9.27/tests'
make: *** [Makefile:347: test] Error 2

Any idea what I'm doing wrong ?

@OppositeDay : count me in for anything Plan9 :)

Cheers, Magic Sam
tcc looks for crt[1/i/n].o in the standard location I guess (/usr/lib or /lib), but they are only in /mnt/utmp/codeblocks/usr/lib
 
@ptitSeb & @Magic Sam

I haven't tried doing this myself, but if you open tcc.c and take a look at


#define CONFIG_TCC_CRT_PREFIX "/usr/lib"


on line 116

Try changing it to:


#define CONFIG_TCC_CRT_PREFIX "/mnt/utmp/codeblocks/usr/lib"

That might help.
Tell me if that helps!

Atom_Find_Tcc.png
 
Last edited:
Hi all :)

@ptitSeb and @Gremblo: I tried again to compile tcc yesterday afternoon, but this time I specified the path to the crt* files:
/media/Pandora1/dev/tcc-0.9.27$ ./configure --prefix=/mnt/utmp/codeblocks/usr --crtprefix=/mnt/utmp/codeblocks/usr/lib

Now, "make test" fails with a segfault:
------------ hello-exe ------------
../tcc -B.. -I../include -I.. -I.. ../examples/ex1.c -o hello && ./hello || (set -x; ../tcc -vv; ldd ../tcc; exit 1)
/bin/bash: line 1: 3126 Segmentation fault ../tcc -B.. -I../include -I.. -I.. ../examples/ex1.c -o hello
+ ../tcc -vv
tcc version 0.9.27 (ARM Linux)

Looks like something else is wrong. Several other paths are misconfigured IMO (include files, libraries, ELF interpreter... all of them point to the NAND instead of /mnt/utmp/codeblocks/usr)

N.B: I also got this warning while compiling:
tccelf.c: In function ���prepare_dynamic_rel���:
tccelf.c:889:18: warning: statement will never be executed [-Wswitch-unreachable]
count++;
~~~~~^~

I'll keep you all posted ;)

Cheers, Magic Sam
 
I'm still thinking about taking up C. The articles suckless links about how C is way better for just getting stuff done than C++ really speak to me. Plus, SDL2 and Lua are written in C; there's probably a good reason for that.

I mean, I should just get started instead of posting about it, I guess. You guys can leave some advice if you want though.
 
glib - implements C++ STL on top of C (because C++ sucks so much, let’s reinvent it!), adding lots of useless data types for “portability” and “readability” reasons. even worse, it is not possible to write robust applications using glib, since it aborts in out-of-memory situations. glib usage is required to write gtk+ and gnome applications, but is also used when common functionality is needed (e.g. hashlists, base64 decoder, etc). it is not suited at all for static linking due to its huge size.

cmake (written in C++) - so huge and bloated, compilation takes longer than compiling GCC (!). It’s not even possible to create freestanding Makefiles, since the generated Makefiles call back into the cmake binary itself.

An other bunch of C++ haters.
Yes, let's go back to the 80s. Let's only use C for everything.
Firefox is harmful, GCC is harmful. Object orientation is harmful.

In know, everything is bad unless one follows those roules
How to be good:
- Use ancient software
- Don't use anything that might make your life easier
- Stop using a GUI at all. All you need is Vim and a terminal
- Use software no one except some hackers know
- Ignore society and use software no one ever heard of and no one will ever use because it is so un-intuitive and unfamiliar
And the most important point:
- Feel like an elite hacker. Judge everything that ordinary people might understand as well and be proud because you are such a genius.
 
An other bunch of C++ haters.
Yes, let's go back to the 80s. Let's only use C for everything.
Firefox is harmful, GCC is harmful. Object orientation is harmful.

In know, everything is bad unless one follows those roules
How to be good:
- Use ancient software
- Don't use anything that might make your life easier
- Stop using a GUI at all. All you need is Vim and a terminal
- Use software no one except some hackers know
- Ignore society and use software no one ever heard of and no one will ever use because it is so un-intuitive and unfamiliar
And the most important point:
- Feel like an elite hacker. Judge everything that ordinary people might understand as well and be proud because you are such a genius.
Some of your comments don't match the reality of what people think.

There's nothing wrong with getting to know computers at a lower level, and want to understand what the software is doing on top of that.

There's something very "Zen", or even cathartic, about stripping everything back to the basics.

Although I love c++ :p
 
Some of your comments don't match the reality of what people think.

There's nothing wrong with getting to know computers at a lower level, and want to understand what the software is doing on top of that.

There's something very "Zen", or even cathartic, about stripping everything back to the basics.

Although I love c++ :p

I want to understand what's going on behind the scenes and I'm very happy we learned C at University and dd not start with Java.
It's very tempting to be on the hacker side but for big software projects and for quick programming I think it's not always good to use the most nerdy and maybe technical perfect tools but the one that people are familiar with.
I don't like how everything gets simplified at cost of other important things.

Anyways it's as it is in other things in life for me: I don't like fundamentalism and those elite hackers hating C++ and modern programming aspects do say things I don't like. Or better I don't like the way they say it.
They are right in a lot of things but it's not the way I see it. I don't like the absence of kindness.
Things like "I don't think it's the best way nowadays and I'd advise you to try out XXX. It has XXX advantages" or "I see that programming should be accessible to a lot more people. And not everyone is comfortable with the "hacker" way to do it. We need software that provides hight level abstraction and portability. But there is an other side as well. I'll tell you. XXX ....."

I don't like those haters and how they promote "good" software.
I prefer the polite way. For me that's some kind of social skill: Not to frighten away people who are not so "elite" as myself. To show respect and see that world is constantly evolving. Sometimes to the better and sometimes worse. But isolation in the own small elite world is not what I think is right.
That does mean one should not ignore bad things and follow every trend. I don't.

It's not so much what they say but how they say it.
What's more appealing to you:
1: "Your programming technique is garbage. The tools you use is garbage. The paradigm you use is garbage. Here, use this XXX"
2: "I use different techniques and tools than you. May I show you what I use and would you mind listening to why I do so. I have reasons why I do so and maybe you'll get some valuable info/profit"

That's what I mean ;)
 
Back
Top