Jun Sun <[email protected]> 于2019年12月30日周一 下午12:31写道:
>
> 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).
>
"normal users" here means people not work on Debian itself.
Normal for Debian not MIPS here.
in fact build-essentials package is for some people like some people
who are maintaining the sbuild/chroot etc for Debian its self.
Sure, cross-build is very useful for normal user (read it as: upstream
developers, or downstream hardware/software vendors).
So, you are wanting the
`mipsel-linux-gnu-gcc`
command on a mips64el env, instead of to use
`mips64el-linux-gnuabi64-gcc -mabi=32`
?
If you, yes, we don't provides it with src:gcc-9-cross-mipsen, since I
proposed that it is not so useful.
If it is really needed. I will add it.
> 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
--
YunQiang Su