C++ Build 32bit binary on 64bit system [on hold]












2















So I have a project that I want to be able to build as a 64bit binary as well as as a 32bit one.

My machine itself is 64bit and the 64bit compile works just fine.



I am using cake to build my project and I used the set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") to force a 32bit build.



Whenever I try to build this the compiler throws an error, because I am including <iostream> in my main program. At first it complained that it couldn't find <bits/c++config.h> which gets included somewhere inside <iostream>.

I found a couple of things online which led me to install g++-multilib on my system. Now the previous error is gone but instead I am getting the error
/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory which also has its origins in the #include <iostream>.



I checked where this file is and I found it in /usr/include/x86_64-linux-gnu/asm/errno.h but (as before with the c++config.h the x86_64 folder appears to not be searched in a 32bit build (which kinda makes sense).

I also found it in /usr/include/linux/errno.h which is identical to the precious one, but as you can see it is not in the asm subfolder.

Obviously I could manually move it into that folder but I have the feeling that there is something generally wrong with my setup here.



So what else do I have to setup in order for me being able to compile my code (with a #include <iostream>) as a 32bit executable? Is there something like a 32bit-version of the std-library?



EDIT:

I am using Linux Mint 18.3 with g++ --version of g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 and cmake v.3.10.2










share|improve this question















put on hold as off-topic by Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar Jan 22 at 8:54


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar

If this question can be reworded to fit the rules in the help center, please edit the question.












  • 1





    This should “just work” with g++-multilib and its dependencies (and obviously it doesn’t, I’m not questioning that). What distribution (including its version) are you using?

    – Stephen Kitt
    Jan 18 at 8:14











  • @StephenKitt I added the information in the question - did I miss something?

    – Raven
    Jan 18 at 8:19











  • Does it work if you build the problematic C++ file manually, without cmake? (This will help determine whether g++ is causing problems, or cmake.)

    – Stephen Kitt
    Jan 18 at 11:02











  • @StephenKitt I just tried compiling it via g++ -m32 main.cpp but it resulted in the same error

    – Raven
    Jan 18 at 12:21











  • Okay nvm- I found the issue

    – Raven
    Jan 18 at 12:23
















2















So I have a project that I want to be able to build as a 64bit binary as well as as a 32bit one.

My machine itself is 64bit and the 64bit compile works just fine.



I am using cake to build my project and I used the set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") to force a 32bit build.



Whenever I try to build this the compiler throws an error, because I am including <iostream> in my main program. At first it complained that it couldn't find <bits/c++config.h> which gets included somewhere inside <iostream>.

I found a couple of things online which led me to install g++-multilib on my system. Now the previous error is gone but instead I am getting the error
/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory which also has its origins in the #include <iostream>.



I checked where this file is and I found it in /usr/include/x86_64-linux-gnu/asm/errno.h but (as before with the c++config.h the x86_64 folder appears to not be searched in a 32bit build (which kinda makes sense).

I also found it in /usr/include/linux/errno.h which is identical to the precious one, but as you can see it is not in the asm subfolder.

Obviously I could manually move it into that folder but I have the feeling that there is something generally wrong with my setup here.



So what else do I have to setup in order for me being able to compile my code (with a #include <iostream>) as a 32bit executable? Is there something like a 32bit-version of the std-library?



EDIT:

I am using Linux Mint 18.3 with g++ --version of g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 and cmake v.3.10.2










share|improve this question















put on hold as off-topic by Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar Jan 22 at 8:54


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar

If this question can be reworded to fit the rules in the help center, please edit the question.












  • 1





    This should “just work” with g++-multilib and its dependencies (and obviously it doesn’t, I’m not questioning that). What distribution (including its version) are you using?

    – Stephen Kitt
    Jan 18 at 8:14











  • @StephenKitt I added the information in the question - did I miss something?

    – Raven
    Jan 18 at 8:19











  • Does it work if you build the problematic C++ file manually, without cmake? (This will help determine whether g++ is causing problems, or cmake.)

    – Stephen Kitt
    Jan 18 at 11:02











  • @StephenKitt I just tried compiling it via g++ -m32 main.cpp but it resulted in the same error

    – Raven
    Jan 18 at 12:21











  • Okay nvm- I found the issue

    – Raven
    Jan 18 at 12:23














2












2








2


1






So I have a project that I want to be able to build as a 64bit binary as well as as a 32bit one.

My machine itself is 64bit and the 64bit compile works just fine.



I am using cake to build my project and I used the set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") to force a 32bit build.



Whenever I try to build this the compiler throws an error, because I am including <iostream> in my main program. At first it complained that it couldn't find <bits/c++config.h> which gets included somewhere inside <iostream>.

I found a couple of things online which led me to install g++-multilib on my system. Now the previous error is gone but instead I am getting the error
/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory which also has its origins in the #include <iostream>.



I checked where this file is and I found it in /usr/include/x86_64-linux-gnu/asm/errno.h but (as before with the c++config.h the x86_64 folder appears to not be searched in a 32bit build (which kinda makes sense).

I also found it in /usr/include/linux/errno.h which is identical to the precious one, but as you can see it is not in the asm subfolder.

Obviously I could manually move it into that folder but I have the feeling that there is something generally wrong with my setup here.



So what else do I have to setup in order for me being able to compile my code (with a #include <iostream>) as a 32bit executable? Is there something like a 32bit-version of the std-library?



EDIT:

I am using Linux Mint 18.3 with g++ --version of g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 and cmake v.3.10.2










share|improve this question
















So I have a project that I want to be able to build as a 64bit binary as well as as a 32bit one.

My machine itself is 64bit and the 64bit compile works just fine.



I am using cake to build my project and I used the set_target_properties(clib PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") to force a 32bit build.



Whenever I try to build this the compiler throws an error, because I am including <iostream> in my main program. At first it complained that it couldn't find <bits/c++config.h> which gets included somewhere inside <iostream>.

I found a couple of things online which led me to install g++-multilib on my system. Now the previous error is gone but instead I am getting the error
/usr/include/linux/errno.h:1:10: fatal error: asm/errno.h: No such file or directory which also has its origins in the #include <iostream>.



I checked where this file is and I found it in /usr/include/x86_64-linux-gnu/asm/errno.h but (as before with the c++config.h the x86_64 folder appears to not be searched in a 32bit build (which kinda makes sense).

I also found it in /usr/include/linux/errno.h which is identical to the precious one, but as you can see it is not in the asm subfolder.

Obviously I could manually move it into that folder but I have the feeling that there is something generally wrong with my setup here.



So what else do I have to setup in order for me being able to compile my code (with a #include <iostream>) as a 32bit executable? Is there something like a 32bit-version of the std-library?



EDIT:

I am using Linux Mint 18.3 with g++ --version of g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 and cmake v.3.10.2







c++ 32bit






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 18 at 8:18







Raven

















asked Jan 18 at 8:04









RavenRaven

246115




246115




put on hold as off-topic by Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar Jan 22 at 8:54


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar

If this question can be reworded to fit the rules in the help center, please edit the question.







put on hold as off-topic by Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar Jan 22 at 8:54


This question appears to be off-topic. The users who voted to close gave this specific reason:


  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – Jeff Schaller, Thomas, Mr Shunz, msp9011, Archemar

If this question can be reworded to fit the rules in the help center, please edit the question.








  • 1





    This should “just work” with g++-multilib and its dependencies (and obviously it doesn’t, I’m not questioning that). What distribution (including its version) are you using?

    – Stephen Kitt
    Jan 18 at 8:14











  • @StephenKitt I added the information in the question - did I miss something?

    – Raven
    Jan 18 at 8:19











  • Does it work if you build the problematic C++ file manually, without cmake? (This will help determine whether g++ is causing problems, or cmake.)

    – Stephen Kitt
    Jan 18 at 11:02











  • @StephenKitt I just tried compiling it via g++ -m32 main.cpp but it resulted in the same error

    – Raven
    Jan 18 at 12:21











  • Okay nvm- I found the issue

    – Raven
    Jan 18 at 12:23














  • 1





    This should “just work” with g++-multilib and its dependencies (and obviously it doesn’t, I’m not questioning that). What distribution (including its version) are you using?

    – Stephen Kitt
    Jan 18 at 8:14











  • @StephenKitt I added the information in the question - did I miss something?

    – Raven
    Jan 18 at 8:19











  • Does it work if you build the problematic C++ file manually, without cmake? (This will help determine whether g++ is causing problems, or cmake.)

    – Stephen Kitt
    Jan 18 at 11:02











  • @StephenKitt I just tried compiling it via g++ -m32 main.cpp but it resulted in the same error

    – Raven
    Jan 18 at 12:21











  • Okay nvm- I found the issue

    – Raven
    Jan 18 at 12:23








1




1





This should “just work” with g++-multilib and its dependencies (and obviously it doesn’t, I’m not questioning that). What distribution (including its version) are you using?

– Stephen Kitt
Jan 18 at 8:14





This should “just work” with g++-multilib and its dependencies (and obviously it doesn’t, I’m not questioning that). What distribution (including its version) are you using?

– Stephen Kitt
Jan 18 at 8:14













@StephenKitt I added the information in the question - did I miss something?

– Raven
Jan 18 at 8:19





@StephenKitt I added the information in the question - did I miss something?

– Raven
Jan 18 at 8:19













Does it work if you build the problematic C++ file manually, without cmake? (This will help determine whether g++ is causing problems, or cmake.)

– Stephen Kitt
Jan 18 at 11:02





Does it work if you build the problematic C++ file manually, without cmake? (This will help determine whether g++ is causing problems, or cmake.)

– Stephen Kitt
Jan 18 at 11:02













@StephenKitt I just tried compiling it via g++ -m32 main.cpp but it resulted in the same error

– Raven
Jan 18 at 12:21





@StephenKitt I just tried compiling it via g++ -m32 main.cpp but it resulted in the same error

– Raven
Jan 18 at 12:21













Okay nvm- I found the issue

– Raven
Jan 18 at 12:23





Okay nvm- I found the issue

– Raven
Jan 18 at 12:23










1 Answer
1






active

oldest

votes


















1














Alright I found out what was the problem:

When I found out, I had to use g++-multilib I went ahead and searched for that in my package manager (synaptic in my case). That one listed a bunch of versions so I checked what version of g++ I had installed and then I installed the appropriate g++-multilib-package which in my case was the g++-7-multilib.



However what it didn't install was the gcc-multilib package which appears to be the troublemaker in my case. After having installed that one, it worked as expected.





Long story short: If I had installed the g++-multilib (without a version in the name) package to begin with, I wouldn't have had this problem.






share|improve this answer



















  • 2





    Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

    – Stephen Kitt
    Jan 18 at 12:29











  • Yeah well - I thought I did xD

    – Raven
    Jan 18 at 12:38






  • 1





    Indeed; I’m just glad you found the answer on your own ;-).

    – Stephen Kitt
    Jan 18 at 12:50


















1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1














Alright I found out what was the problem:

When I found out, I had to use g++-multilib I went ahead and searched for that in my package manager (synaptic in my case). That one listed a bunch of versions so I checked what version of g++ I had installed and then I installed the appropriate g++-multilib-package which in my case was the g++-7-multilib.



However what it didn't install was the gcc-multilib package which appears to be the troublemaker in my case. After having installed that one, it worked as expected.





Long story short: If I had installed the g++-multilib (without a version in the name) package to begin with, I wouldn't have had this problem.






share|improve this answer



















  • 2





    Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

    – Stephen Kitt
    Jan 18 at 12:29











  • Yeah well - I thought I did xD

    – Raven
    Jan 18 at 12:38






  • 1





    Indeed; I’m just glad you found the answer on your own ;-).

    – Stephen Kitt
    Jan 18 at 12:50
















1














Alright I found out what was the problem:

When I found out, I had to use g++-multilib I went ahead and searched for that in my package manager (synaptic in my case). That one listed a bunch of versions so I checked what version of g++ I had installed and then I installed the appropriate g++-multilib-package which in my case was the g++-7-multilib.



However what it didn't install was the gcc-multilib package which appears to be the troublemaker in my case. After having installed that one, it worked as expected.





Long story short: If I had installed the g++-multilib (without a version in the name) package to begin with, I wouldn't have had this problem.






share|improve this answer



















  • 2





    Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

    – Stephen Kitt
    Jan 18 at 12:29











  • Yeah well - I thought I did xD

    – Raven
    Jan 18 at 12:38






  • 1





    Indeed; I’m just glad you found the answer on your own ;-).

    – Stephen Kitt
    Jan 18 at 12:50














1












1








1







Alright I found out what was the problem:

When I found out, I had to use g++-multilib I went ahead and searched for that in my package manager (synaptic in my case). That one listed a bunch of versions so I checked what version of g++ I had installed and then I installed the appropriate g++-multilib-package which in my case was the g++-7-multilib.



However what it didn't install was the gcc-multilib package which appears to be the troublemaker in my case. After having installed that one, it worked as expected.





Long story short: If I had installed the g++-multilib (without a version in the name) package to begin with, I wouldn't have had this problem.






share|improve this answer













Alright I found out what was the problem:

When I found out, I had to use g++-multilib I went ahead and searched for that in my package manager (synaptic in my case). That one listed a bunch of versions so I checked what version of g++ I had installed and then I installed the appropriate g++-multilib-package which in my case was the g++-7-multilib.



However what it didn't install was the gcc-multilib package which appears to be the troublemaker in my case. After having installed that one, it worked as expected.





Long story short: If I had installed the g++-multilib (without a version in the name) package to begin with, I wouldn't have had this problem.







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 18 at 12:27









RavenRaven

246115




246115








  • 2





    Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

    – Stephen Kitt
    Jan 18 at 12:29











  • Yeah well - I thought I did xD

    – Raven
    Jan 18 at 12:38






  • 1





    Indeed; I’m just glad you found the answer on your own ;-).

    – Stephen Kitt
    Jan 18 at 12:50














  • 2





    Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

    – Stephen Kitt
    Jan 18 at 12:29











  • Yeah well - I thought I did xD

    – Raven
    Jan 18 at 12:38






  • 1





    Indeed; I’m just glad you found the answer on your own ;-).

    – Stephen Kitt
    Jan 18 at 12:50








2




2





Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

– Stephen Kitt
Jan 18 at 12:29





Hah, good one; given your question it would have been difficult to find the answer for you (since you say you installed g++-multilib).

– Stephen Kitt
Jan 18 at 12:29













Yeah well - I thought I did xD

– Raven
Jan 18 at 12:38





Yeah well - I thought I did xD

– Raven
Jan 18 at 12:38




1




1





Indeed; I’m just glad you found the answer on your own ;-).

– Stephen Kitt
Jan 18 at 12:50





Indeed; I’m just glad you found the answer on your own ;-).

– Stephen Kitt
Jan 18 at 12:50



Popular posts from this blog

How to make a Squid Proxy server?

Is this a new Fibonacci Identity?

19世紀