How Compilation Works Internally In C And C++?

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 พ.ย. 2024

ความคิดเห็น • 108

  • @CppNuts
    @CppNuts  5 ปีที่แล้ว +5

    Hi everyone, Don't forget to hit LIKE and SUBSCRIBE button for more videos like this!!
    And this will help me a-lot.

    • @niketzope3884
      @niketzope3884 5 ปีที่แล้ว +1

      Sir, can I have your mail-id, Actually, I'm an embedded Engineer Fresher in need of guidance gone through your c++ videos while viewing this video you mentioned ready queue I want to get in-depth knowledge c++ programming with Kernel.
      Please reply

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว

      Happy to see you so interested in c++, but i am not from Embedded background so i don't have much info about your question. But try hard in google you will get the answer for your questions i am sure.

    • @greymind0072
      @greymind0072 3 ปีที่แล้ว

      Exceptional , simply so lucid and effective way of sharing knowledge. This page deserved million views and like for the quality content it have. Thank you so much for all the help and tutorials

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว

      Thanks man..

    • @rickzhi5498
      @rickzhi5498 ปีที่แล้ว

      No problem

  • @subbumotepalli
    @subbumotepalli 5 ปีที่แล้ว +6

    Y i was missed cppnuts these many days.luckly i found today.Thank you sir.Asome topics and explanation.

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว

      Thanks man, share with friends so that they can be benefited too.

  • @senthilandavanpalani7294
    @senthilandavanpalani7294 5 ปีที่แล้ว +2

    Basic and Useful concise video.Thank you for this post. Compiler does not mean it only gives *.o files.But there are things happening underhood such as preprocessor, then proprocessor files are used by compiler and process it and gives assembler code.Then assembler code code was used by Assembler and after it processed it gives object files.Then object files and static libraries are used by linker and process then gives executable file.Then executable file and the dll,.so files are used by Loader to load into the OS. You guys are really helping a lot of C++ people including you.Expecting many more concepts.

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว

      I appreciation it.

  • @jitendrabaug6928
    @jitendrabaug6928 5 ปีที่แล้ว +1

    It is so nice of you to create these videos. Thank you Very Much. One request .. Could you please explain the member functions(static/non-static) and where it is stored in memory model(code/Data/Stack/Heap) and how the call is performed ?

  • @programmingwithht
    @programmingwithht 3 ปีที่แล้ว

    In windows We use
    g++ -o main.exe main.cpp --save-temps
    To get assembler file, preprocessor file and object file

  • @nemesisanims7401
    @nemesisanims7401 4 ปีที่แล้ว

    Please add in depth videos, i rellly love this, and you should start teaching OS with c++, you will definetly rock

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว

      Sure.. man thanks..

  • @faroquealjakaria3661
    @faroquealjakaria3661 7 ปีที่แล้ว +2

    Thanks a lot! This really cleared some of my doubts. Good job.

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว +1

      Faroque AI Jakaria Hi..
      Welcome Dude..
      Keep Learning!!

  • @sauravgupta6166
    @sauravgupta6166 3 ปีที่แล้ว

    g++ fileName.cpp --save-temps also worked on Windows! Thank you so much, I glad to know about your channel by one of my true friend.

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว +1

      Glad to help!

  • @raisshaikh2105
    @raisshaikh2105 7 ปีที่แล้ว +2

    It would be good if you can upload video about how dynamic and static libraries are loaded during program execution?

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว +2

      +Rais Shaikh Hi..
      Nice question, wait for next week. :)

  • @ashrafashraf4404
    @ashrafashraf4404 4 ปีที่แล้ว +1

    Great teaching boss
    I Love The Video

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว +1

      Many many thanks

  • @bostonlights2749
    @bostonlights2749 4 ปีที่แล้ว

    wow man....
    this is so cool
    looking under the hood to see all the assembly level code written.

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว

      Thanks dude..

  • @shivakaramadi9444
    @shivakaramadi9444 5 ปีที่แล้ว +2

    your videos are amazingly informative and very helpful.
    Do you know how do I capture pre-processor output?

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว

      In linux there is an option u can provide while compiling which is save-temps which should give u that, i dont know in windows. And google about save-temps u will get it.

  • @sireeshajangam1561
    @sireeshajangam1561 3 ปีที่แล้ว

    Wonderful explanation sir👍👍👍

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว

      Thanks man.

  • @deepaksingh-mk2nu
    @deepaksingh-mk2nu 6 ปีที่แล้ว

    Hi man .... What i am saying it might be more than expectation ..... Can you make some video for real time work and how industry is working on the c++ and how it works .....too many underprivileged people can make benefit from it No one is there like you that's why i am requesting....
    Again Many many thanks to you for your great job ...

  • @deepaksingh-mk2nu
    @deepaksingh-mk2nu 6 ปีที่แล้ว +1

    Hi you doing great job Regularly i am watching your video
    i have an doubt
    Q1. Why derived class pointer can not point to base class pointer?
    Q2. If we are not creating the copy constructor compiler will provide the copy constructor But if we write our own the copy constructor then how the compiler know no need to create the copy constructor?
    Thanks

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว

      Ans 1: i will create a video for this, so stay tuned for your answer.
      Ans 2: copy constructor syntax is fixed so when you are compiling code then compiler checks for copy constructor syntax in your class and if that is available then compiler doesn't provide its own.

    • @deepaksingh-mk2nu
      @deepaksingh-mk2nu 6 ปีที่แล้ว

      many many thanks to you :)

    • @luckbychance3179
      @luckbychance3179 6 ปีที่แล้ว

      Why derived class pointer can not point to base class pointer?: Because a base class pointer do not have any idea about the content of Base class so when pointing a derived class pointer to a base class will cause an error. You can do the upcasting to perform such operations.

  • @spicytuna08
    @spicytuna08 6 ปีที่แล้ว +8

    u r like a classical pianist virtuoso except you use keyboard. pretty impressive.

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว +1

      Thanks for such a nice comment!! :D

  • @mayaicdi
    @mayaicdi 2 ปีที่แล้ว

    Love your videos! Keep up the good work!

    • @CppNuts
      @CppNuts  2 ปีที่แล้ว

      Thanks

  • @R_BNK
    @R_BNK 7 ปีที่แล้ว +1

    Nice work bro ... Your videos are very helpful ...Keep it up

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว

      +Rohit Benake hi..
      i would :D
      thanks dude..

  • @tapanjeetroy8266
    @tapanjeetroy8266 3 ปีที่แล้ว

    Thanks for this awesome explanation

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว

      Welcome

  • @techytechwithgunjan9175
    @techytechwithgunjan9175 6 ปีที่แล้ว +3

    perfect explanation

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว

      Thanks man...

  • @abhishektandon2312
    @abhishektandon2312 3 ปีที่แล้ว

    Does Linker create .exe file in case of ubuntu , because .exe are only compatible with windows OS

  • @arunselvasuresh6048
    @arunselvasuresh6048 3 ปีที่แล้ว

    Please explain about static and dynamic libs

  • @R_BNK
    @R_BNK 7 ปีที่แล้ว +1

    Very Good Explanation ...👍

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว

      +Rohit Benake hi..
      thank you so much.. :D

  • @dreamskycreations1902
    @dreamskycreations1902 4 ปีที่แล้ว +1

    Nicely explained bro👍

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว +1

      Thanks man..

  • @mockingbird3809
    @mockingbird3809 4 ปีที่แล้ว

    great explanation!

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว

      Glad it was helpful!

  • @sonulohani
    @sonulohani 7 ปีที่แล้ว +1

    good one bro... u deserve more subs

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว

      +Sonu Lohani hi..
      thanks for your appreciation, and i will have one day for sure.. ;)

  • @sivaramakrishnachitithoti1428
    @sivaramakrishnachitithoti1428 4 ปีที่แล้ว +1

    Thanks

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว

      Welcome..

  • @testingDhippiuh
    @testingDhippiuh 4 ปีที่แล้ว

    Thanks for sharing

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว

      My pleasure

  • @kunalprasad1678
    @kunalprasad1678 4 ปีที่แล้ว

    Why adding function to structure or class doesn't increase its size but variable increases its size...?
    Can you please explain.

  • @m.vineeth9724
    @m.vineeth9724 3 ปีที่แล้ว

    Awesome explanation 🔥

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว

      Glad you liked it

  • @nemesisanims7401
    @nemesisanims7401 4 ปีที่แล้ว

    just a bit of suggestion, please combine your knowledge with Operating Systems, it will really boost up your channel

    • @CppNuts
      @CppNuts  4 ปีที่แล้ว

      Sure.. i will try..

  • @aftabalam5521
    @aftabalam5521 6 ปีที่แล้ว +1

    When we say new state of operating system where is our code(hard disk or ram?
    Like u said that loader loads the executable to ready state of OS?

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว +2

      When you double click any application, then the application will get converted into pages and will be stored in RAM. This is new state. Page creation is very big topic search it. (if you already don't know)

  • @TheStrelok7
    @TheStrelok7 7 ปีที่แล้ว +1

    Parsing the Template in preprocess stage or in compile stage?

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว +1

      +Iron Core hi..
      it happens at compile time.

    • @TheStrelok7
      @TheStrelok7 7 ปีที่แล้ว +1

      can you prove that cuz i'm little some confused!
      one last thing, someone said: if C++ templates are implemented by preprocessing, there will be issues with dynamic linking(using .dll).
      how could this happen?

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว +1

      +Iron Core Read second answer. stackoverflow.com/questions/6264249/how-does-the-compilation-linking-process-work

  • @kunalprasad6898
    @kunalprasad6898 4 ปีที่แล้ว

    I have a doubt.If Dll is linked with .exe then why our code throws error while building program if we dont mentioned path of dll.According to your concept it should throw error when i will try to run not build?
    Please let me know if I am wrong.

    • @aby_yadav
      @aby_yadav ปีที่แล้ว

      Good question. Dynamic libraries (dll or .so) are also looked by linker for resolving symbols. You can run ldd to see from where it is linking.

  • @azadalishah2966
    @azadalishah2966 5 ปีที่แล้ว

    Can u pls explain how .dll and .so is linked/loaded while running executable? Thanks in advance:)

  • @alliswell6587
    @alliswell6587 5 ปีที่แล้ว

    will you please explain the compilation steps in windows

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว +1

      It is similar, there is no difference in compilation when it comes to OS.

  • @vvpChannel3112
    @vvpChannel3112 5 ปีที่แล้ว +1

    i dont understand .in the diagram u said .asm file generates first and assembler converts .asm to .obj file...and demo u showed that obj file generates before .asm file

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว +1

      .asm come first then .obj.

  • @TechSafarWithSunil
    @TechSafarWithSunil 7 ปีที่แล้ว +1

    If my program compile successfully then how it fails at linking time?

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว

      sunil singh Hi..
      It can not compile successfully if not linked properly, for example linking means it can see whether the definition of every function i have used is available if not than linking error.
      [Preprocessor -> Compiler -> Linker] ==>> all these phases combined together is called Compiler.
      Don't get confuse with 2nd step being named as compiler i don't know why they kept it so confusing (everything all together is called compiler and 2nd step is also called compiler).
      If you are still confuse please wait for my another video where i will take an example and will explain all the intermediate steps with that.

    • @TechSafarWithSunil
      @TechSafarWithSunil 7 ปีที่แล้ว +1

      Thank you sir

  • @sethupathynarayanaswamy8192
    @sethupathynarayanaswamy8192 5 ปีที่แล้ว +1

    Good Job :-)

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว +1

      Thanks man!!

  • @jotirlingswami9357
    @jotirlingswami9357 5 ปีที่แล้ว +1

    #include
    void foo()
    {
    #define MY_NAME "Alex"
    }
    int main()
    {
    std::cout

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว +1

      #define will be available after defining it, and in second case you are trying to use before defining.

    • @jotirlingswami9357
      @jotirlingswami9357 5 ปีที่แล้ว +1

      @@CppNuts So at the time of compilation it read the value of MY_NAME and replace at where ever it find MY_NAME.
      It has only file and global scope right?

    • @CppNuts
      @CppNuts  5 ปีที่แล้ว +1

      @@jotirlingswami9357 #define can be inside functions also, and it has nothing to do with compilation, as it will be processed during preprocessing time.
      But your 2nd program is not working because MY_NAME is not replaced with preprocessor because when preprocessor would have reached to line:
      std::cout

    • @jotirlingswami9357
      @jotirlingswami9357 2 ปีที่แล้ว

      @@CppNuts Very good explanation
      Thank you sir

  • @jotirlingswami9357
    @jotirlingswami9357 2 ปีที่แล้ว

    The comment is replaced with empty new line after preprocessor in *.ii file.

  • @aseemsameer7281
    @aseemsameer7281 2 ปีที่แล้ว

    Cool

  • @sonulohani
    @sonulohani 7 ปีที่แล้ว +1

    are you a student?

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว +1

      +Sonu Lohani hi..
      No dude i work, and fallen in love to make videos and want to make a huge channel for C & C++.

    • @sonulohani
      @sonulohani 7 ปีที่แล้ว +1

      CppNuts if you dont mind can i ask where do you work

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว +1

      +Sonu Lohani hi..
      Dude thanks for your interest, i work in Bangalore.
      Company i can't tell because i want to keep it secret until i announce this channel in my friend circle. :D

    • @sonulohani
      @sonulohani 7 ปีที่แล้ว +1

      Thanks for sharing the details... Its ok to keep it as secret. I also work in Bangalore as C++ dev.

    • @CppNuts
      @CppNuts  7 ปีที่แล้ว

      +Sonu Lohani hi..
      great.. can you share the company if it's ok with you. ;)

  • @oldold6636
    @oldold6636 6 ปีที่แล้ว +1

    ok?ok?ok?

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว +1

      yess one of my bad habits.. :)

    • @ArunDhyani
      @ArunDhyani 6 ปีที่แล้ว +1

      CppNuts usually you get this habit by talking to south Indians 😂 . But hey if you could tell us more about shared objects and how do they work . It would be really helpful.

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว

      Yes i am in Bangalore :), and i didn't get your question about shared objects plz explain more..?

    • @ArunDhyani
      @ArunDhyani 6 ปีที่แล้ว +1

      Hi , I am also a c++ developer . First you get .o and then linker generates .lo . I am clear to these steps . But how does .so are generated and I think I read somewhere that they are dynamic linked (how does that work? ). If you could make a separate video for explaining shared objects it would be really helpful.

    • @CppNuts
      @CppNuts  6 ปีที่แล้ว

      Ok, that requires another video will try some day..

  • @mallika1427
    @mallika1427 3 ปีที่แล้ว

    Thanks

    • @CppNuts
      @CppNuts  3 ปีที่แล้ว

      Thanks