I might be out of touch. Who are considered "normal users" for MIPS today? I always thought for a long time MIPS users are pretty much just developers, which means they would need build-essentials. Having crossbuild is just a convenient way to enable development for both 32bit and 64bit on 64bit machine, because I thought, which could be wrong, 32bit crossbuild are simply the same as 32bit native build tools (as in the case of ARM and x86, I presume).
In any case, multilib works as expected so far. Thanks for your help. I will move on down the path of multilib for now. Cheers. Jun On Sun, Dec 29, 2019 at 5:02 PM YunQiang Su <[email protected]> wrote: > Jun Sun <[email protected]> 于2019年12月30日周一 上午6:01写道: > > > > Multiarch is the first thing I tried. It generally works in terms of > adding foreign architecture, finding/install packages with proper > dependencies, runtime support, linkers and etc. The only thing seemingly > broken is the crossbuild-essential-mipsel, (or build-essential:mipsel, I > think), which is needed to develop 32bit in this multiarch environment. > See my earlier email on this. > > > > Sorry. My stack is toooo shallow. > build-essential make no sense for normal user at all. > It is used to make sbuild/pbuilder happier. > In fact you should not install crossbuild-essential-* manually at all. > > > > I think multiarch is the future for debian. We should get it working on > 64bit MIPS. It does not seem too far to fix it. From surface, the > crossbuild has some unnecessary conflict with native build essential > package. Maybe removing those should be fine? > > In fact it is too hard to fix. > For a suggestion, the normal user should choose only on from mutlilib > and multiarch. > > For example, if you want to use multiarch, you'd have to purge > multilib packages. > > > > > Cheers. > > > > Jun > > > > > > On Sun, Dec 29, 2019 at 4:59 AM YunQiang Su <[email protected]> wrote: > >> > >> YunQiang Su <[email protected]> 于2019年12月29日周日 下午8:43写道: > >> > > >> > Jun Sun <[email protected]> 于2019年12月29日周日 下午3:33写道: > >> > > > >> > > Thanks for the info, YunQiang. > >> > > > >> > > For simple compiling, I can see "gcc -mabl=32" working well. If we > want to port complex project and build in 32 bit, we would need to supply > CC, AS, LD, AR, CXX, etc. Do we just use all the 64bit versions with > "-mabi=32"? For compiling C++ code, what additional package should we > install? > >> > > > >> > > >> > If only stdc++ is needed, install g++-multlib is enough. > >> > > >> > If you need more libraries like boost etc, the best choice for you is > >> > to use mipsel port: > >> > > >> > sudo apt install debootstrap systemd-container > >> > sudo debootstrap sid sid-mipsel http://ftp.cn.debian.org/debian # I > >> > suppose you are in China. > >> > sudo systemd-nspawn -D sid-mipsel > >> > > >> > Or you can have a try of lxc. > >> > > >> > >> there is another way is that maybe you can have a try multiarch: > >> https://wiki.debian.org/Multiarch/HOWTO > >> > >> > > Cheers. > >> > > > >> > > Jun > >> > > > >> > > > >> > > > >> > > > >> > > On Sat, Dec 28, 2019 at 9:28 PM YunQiang Su <[email protected]> > wrote: > >> > >> > >> > >> Jun Sun <[email protected]> 于2019年12月29日周日 上午9:43写道: > >> > >> > > >> > >> > installing g++-mipsel-linux-gnu gives an error below. Any > suggestions? Also, what is the recommended way to set up full 32bit dev > environment on 64bit host if crossbuild is not the one? > >> > >> > > >> > >> > Jun > >> > >> > > >> > >> > root@debian-mips:/home/debian# apt install g++-mipsel-linux-gnu > >> > >> > Reading package lists... Done > >> > >> > Building dependency tree > >> > >> > Reading state information... Done > >> > >> > Package g++-mipsel-linux-gnu is not available, but is referred > to by another package. > >> > >> > This may mean that the package is missing, has been obsoleted, or > >> > >> > is only available from another source > >> > >> > > >> > >> > E: Package 'g++-mipsel-linux-gnu' has no installation candidate > >> > >> > >> > >> Ohh, sorry. you are on a mips64el system... > >> > >> We don't have that compiler, while you can just > >> > >> apt install libc6-dev-mips32 > >> > >> gcc -mabi=32 > >> > >> > >> > >> > > >> > >> > > >> > >> > > >> > >> > On Sat, Dec 28, 2019 at 4:14 PM YunQiang Su <[email protected]> > wrote: > >> > >> >> > >> > >> >> Jun Sun <[email protected]> 于2019年12月29日周日 上午5:43写道: > >> > >> >> > > >> > >> >> > re-surfacing my own old thread ... > >> > >> >> > > >> > >> >> > On ARM, I was able to do something really simple to obtain > complete 32bit development on a 64bit host: > >> > >> >> > > >> > >> >> > apt install -y build-essential # this install 64bit dev > environment > >> > >> >> > apt install -y crossbuild-essential-armhf # this install > 32bit cross-dev environment > >> > >> >> > apt install -y libc6:armhf > >> > >> >> > apt install -y libstdc++6:armhf > >> > >> >> > >> > >> >> yep. we don't have the crossbuild-essential-mipsel package. > >> > >> >> While for normal user, it is not useful at all. > >> > >> >> > >> > >> >> crossbuild-essential-armhf depends on g++-arm-linux-gnueabihf && > >> > >> >> gcc-arm-linux-gnueabihf > >> > >> >> > >> > >> >> So, you can do the same thing just by > >> > >> >> apt install g++-mipsel-linux-gnu # gcc-mipsel-linux-gnu is > not > >> > >> >> needed, since g++ depeds on gcc. > >> > >> >> > >> > >> >> > > >> > >> >> > However, similar steps don't work on mips64. Specifically it > is apparent crossbuild-essential-mipsel dependency is broken, and if you > try to fix the dependencies and it ended up conflicting with > build-essential. > >> > >> >> > > >> > >> >> > Are there more better way to install a complete 32bit dev > environment than what is mentioned earlier in this thread? > >> > >> >> > > >> > >> >> > Thanks! > >> > >> >> > > >> > >> >> > Jun > >> > >> >> > > >> > >> >> > > >> > >> >> > > >> > >> >> > On Sun, May 19, 2019 at 9:10 PM Jun Sun <[email protected]> > wrote: > >> > >> >> >> > >> > >> >> >> This is very cool! It worked! Thanks. > >> > >> >> >> > >> > >> >> >> For a complete record here is what I did: > >> > >> >> >>> > >> > >> >> >>> dpkg --add-architecture mipsel > >> > >> >> >>> > >> > >> >> >>> apt-get update > >> > >> >> >>> > >> > >> >> >>> apt-get install gcc-multilib > >> > >> >> >>> > >> > >> >> >>> > >> > >> >> >> > >> > >> >> >> > >> > >> >> >> Earlier I was using "-m32" option which was not recognized. > but -march=mips32 -mabi=32 worked just fine. > >> > >> >> >> > >> > >> >> >> Also, just for the record, if one likes to install 32bit > library later, you would just add ":mipsel" to the package name. For > example, you would do "apt install zlib1g:mipsel" to install 32bit version > of zlib. > >> > >> >> >> > >> > >> >> >> Cheers. > >> > >> >> >> > >> > >> >> >> Jun > >> > >> >> >> > >> > >> >> >> > >> > >> >> >> On Sun, May 19, 2019 at 5:55 PM YunQiang Su < > [email protected]> wrote: > >> > >> >> >>> > >> > >> >> >>> Jun Sun <[email protected]> 于2019年5月20日周一 上午7:42写道: > >> > >> >> >>> > > >> > >> >> >>> > Recently I came across a piece of great work by blahcat > who created 64bit MIPSEL debian image that runs on qemu. See > https://blahcat.github.io/2017/07/14/building-a-debian-stretch-qemu-image-for-mipsel/ > >> > >> >> >>> > > >> > >> >> >>> > I tried to install multilib in the hope to compile 32bit > mips code on this 64bit machine. But it does not seem to work. > >> > >> >> >>> > > >> > >> >> >>> how did you install it? > >> > >> >> >>> it should be done like: > >> > >> >> >>> > >> > >> >> >>> apt-get install libc6-dev-mips32 gcc > >> > >> >> >>> and > >> > >> >> >>> gcc -march=mips32 -mabi=32 xx.c > >> > >> >> >>> > >> > >> >> >>> If your app needs libc only, it is enough. > >> > >> >> >>> > >> > >> >> >>> > Does anybody know for sure whether this is a dead end or > just a hiccup which I should overcome? > >> > >> >> >>> > >> > >> >> >>> If your app depends on more libraries, you may need to use > an mipsel > >> > >> >> >>> env, or use multiarch. > >> > >> >> >>> https://wiki.debian.org/Multiarch/HOWTO > >> > >> >> >>> > >> > >> >> >>> > > >> > >> >> >>> > Thanks. > >> > >> >> >>> > > >> > >> >> >>> > Jun > >> > >> >> >>> > >> > >> >> >>> > >> > >> >> >>> > >> > >> >> >>> -- > >> > >> >> >>> YunQiang Su > >> > >> >> > >> > >> >> > >> > >> >> > >> > >> >> -- > >> > >> >> YunQiang Su > >> > >> > >> > >> > >> > >> > >> > >> -- > >> > >> YunQiang Su > >> > > >> > > >> > > >> > -- > >> > YunQiang Su > >> > >> > >> > >> -- > >> YunQiang Su > > > > -- > YunQiang Su >

