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.

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?

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
>

Reply via email to