"Instead of standardizing how to do that across all Unixen—something that would take just a single flag to the ld(1) command..."
Hmm. Yes. But what if they standardize on something you, or Kamp, don't like?
Here's an anecdote for you:
When I was working for IBM in the mid-90s, the AIX/RS6000/PowerPC C/C++ compiler folks (in Toronto?) were justifiably proud of the code their compiler generated. But it had one peculiarity. It generated machine code directly, without going through an assembler. Oh, it could generate an assembly listing with -S, but the output wasn't syntactically valid. It couldn't compile the generated assembly.
This was a strongly defended position. "Why would you want to?" they said, "It's really hard to write good assembly for a RISC machine. Not many can do it."
These are the people who are needed to standardize things.
Now, at the time, AIX had a ridiculously complicated (but very flexible and featuriferous) dance required to build shared libraries. Using libtool is easier. I can hear the counterargument now. "You want us to hamstring our users? To just guess what they what they want to do, behind a single flag? Are you crazy?"
Fortunately, now, after Linux switched from a.out to ELF, I have been able to use "gcc -shared" to build all of the shared objects I've needed to. So, yay!
To be clear, I'm critical of the argument for many of the same reasons you are.
However, the counter argument is that libtool is an existence proof that there is a simpler cross-platform interface that developers can work with and generally prefer for making libraries & shared libraries. At the very least you can accomplish what it does.
Honestly, I think he's absolutely right that it is possible to correct the problem in ld, but it require orchestration of a lot of work that a) isn't a priority, because libtool already solves the problem "well enough" b) most platforms have little incentive to do so, and c) that's not the Cathedral in the Cathedral & Bazaar model.
Hmm. Yes. But what if they standardize on something you, or Kamp, don't like?
Here's an anecdote for you:
When I was working for IBM in the mid-90s, the AIX/RS6000/PowerPC C/C++ compiler folks (in Toronto?) were justifiably proud of the code their compiler generated. But it had one peculiarity. It generated machine code directly, without going through an assembler. Oh, it could generate an assembly listing with -S, but the output wasn't syntactically valid. It couldn't compile the generated assembly.
This was a strongly defended position. "Why would you want to?" they said, "It's really hard to write good assembly for a RISC machine. Not many can do it."
These are the people who are needed to standardize things.
Now, at the time, AIX had a ridiculously complicated (but very flexible and featuriferous) dance required to build shared libraries. Using libtool is easier. I can hear the counterargument now. "You want us to hamstring our users? To just guess what they what they want to do, behind a single flag? Are you crazy?"
Fortunately, now, after Linux switched from a.out to ELF, I have been able to use "gcc -shared" to build all of the shared objects I've needed to. So, yay!
But I understand Kamp doesn't like gcc....