Je viens de refaire l'exercice: la toolchain compilée par le script listé à
http://hackspire.unsads.com/wiki/index. ... n_on_Linux (crosstool-ng permettait également d'en créer une) est C++, et je peux
construire le programme suivant:
- Code: Select all
#include "os.h"
#include < string>
#include <iostream>
int main(int argc, char * argv[]) {
std::string str(argv[0]);
std::cout << str << std::endl;
return 0;
}
de la façon suivante:
- Code: Select all
nspire-g++ -Wall -W -g3 testcxx.cpp -ffreestanding -ffunction-sections -fdata-sections -Wl,--gc-sections -o testcxx -lndls
(certaines options superflues, bien sûr)
Les templates et iostreams sont donc support
ables.
Après la construction, que le binaire produit
fonctionne sur Nspire (nspire_emu ou machine réelle) en utilisant Ndless 3.6 est une toute autre histoire. La toolchain, et donc les binaires qu'elle produit, ne sont évidemment pas construits vis à vis des syscalls Ndless, même après ajout de -lndls.
Il faudrait refaire la manip avec une vraie toolchain bare metal, sans utiliser, par exemple, newlib.
Ce sera tout pour moi ce soir

EDIT: pas tout à fait, en réalité. Les toolchains bare metal sont faites principalement pour le C, et la compilation automatique de la toolchain par crosstool-ng sans newlib échoue lamentablement dans libstdc++, faute de pouvoir trouver stdio.h.
Il faut donc rester à un processus plus manuel, où on peut injecter l'environnement Ndless (qui sera certainement à étendre, c'est le cas général quand on porte un soft portable vers une plate-forme non standard dont on fait progressivement les headers; par exemple j'avais amélioré GCC4TI pour pouvoir patcher moins lourdement Lua et p14p pour fonctionner sur TI-68k/AMS) à la place de newlib, puis déclencher le build final...