Тёмный

Makefiles: 95% of what you need to know 

Gabriel Parmer
Подписаться 2,4 тыс.
Просмотров 112 тыс.
50% 1

Makefiles are confusing and archaic. This tutorial goes of a few different complexity levels of Makefiles to walk you through their functionality. Should serve as a decent introduction about the purpose and goals of build systems. in general.
This was cast as an office hour for the GWU OS class associated with the Evening OS Hour (@ / gparmer . The associated files can be found at github.com/gwu-cs-os/evening_...

Наука

Опубликовано:

 

1 ноя 2019

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 142   
@ishaanmahajan4683
@ishaanmahajan4683 Год назад
Believe me, he has put his entire heart creating this video, flawlessly just amazing :)
@BinderTronics
@BinderTronics Год назад
Thank you for taking the time to record this. It is very hard to find coherent information on the higher level topic in programming.
@333protoman
@333protoman 2 года назад
Amazing literally the best tutorial, can't believe this hasn't blown up
@MrUnix-xf8dq
@MrUnix-xf8dq 6 месяцев назад
Absolutely flawless video, and flawless teaching style. Never stop teaching, you have what it takes!
@tebes9265
@tebes9265 2 года назад
Great tutorial on makefiles. Learned everything I needed. Thank you!
@CONVICT700
@CONVICT700 10 месяцев назад
What a great tutorial. I’m only jumping back into Linux recently and not only did you teach me about make, but you also provided a great refresher regarding C, lib, includes etc. thanks a lot
@shrutsilakari9711
@shrutsilakari9711 Год назад
I've looked for a long time, finally I've found the ultimate Makfile tutorial. This was so great, thanks so much
@fjkldhakljf
@fjkldhakljf Год назад
I wish I had a professor like you , Such clear and concise teaching everything is motivated , actually interesing and applicable information, thank you sir
@nightfox6738
@nightfox6738 Год назад
The automatic recognition of changes to header files is a godsend and something I did not know. Just implemented it in all of my makefiles and I love it! Thank you!
@nothing6001
@nothing6001 Год назад
Really glad to hear it helped!!!
@user-hn2fg9ws1s
@user-hn2fg9ws1s 2 года назад
I can't believe I finally found a powerful lecture about makefile, it was a hopeless case before watching this video, thanks @Gabriel
@fahad9739
@fahad9739 4 месяца назад
Great video. Other tutorials only ended up in confusion for beginners. This is THE makefile tutorial. Thanks for doing this.
@kryt7955
@kryt7955 15 дней назад
This is THE BEST tutorial on make out there. I've looked at so many other resources but I couldn't understand a thing reading/watching them. Thanks a lot for your effort :)
@jeffliang166
@jeffliang166 Год назад
What an amazing and informative tutorial for makefiles! Thank you.
@PhilR0gers
@PhilR0gers 3 месяца назад
Having inherited a project that uses make on Linux, and coming from a Visual Studio on Windows background, this has been so useful in helping me understand what is going on. Thanks.
@AjitSingh-rg3zu
@AjitSingh-rg3zu 11 месяцев назад
This video is very very good starting point for those beginners who are learning build systems. Thanks for such amazing content
@nothing6001
@nothing6001 11 месяцев назад
You're welcome; glad you like it!
@markhache6756
@markhache6756 10 месяцев назад
Great, fantastic, love it. The only part missing for my prog was a way to include a pre-compiled library; in my case the "mosquitto" library. I just added a 4th line to your first three. OTHERLIBS=mosquitto Then LLIBS=$(foreach D,$(OTHERLIBS), -l$(D)) and lastly chg'd the rule for $(BINARY): $(OBJECTS) to [tab]$(CC) -o $@ $^ $(LLIBS)
@mklite
@mklite Год назад
This is the greatest make file tutorial. Thanks for utilizing your talent to help and teach beginners. I hope you continue to produce tutorials on other topics. Bash, docker, yml pipelines, etc...?
@nothing6001
@nothing6001 Год назад
Thanks for the suggestions! Keep 'em coming! Within the next 6 months, I do want to make a series of videos about systems tools.
@francescolemma5582
@francescolemma5582 8 месяцев назад
@@nothing6001 can't wait to see them coming
@tuzaguilar4201
@tuzaguilar4201 Год назад
Thank you for a very informative and complete tutorial. Much appreciated.
@joelmontesdeoca6572
@joelmontesdeoca6572 4 года назад
This looks great. I saved it to watch later when I have more time. Thanks.
@nitinbabariya3222
@nitinbabariya3222 Год назад
Wow! That's i call a very great explanation. Thanks for putting so much efforts
@ivankryvosheia446
@ivankryvosheia446 2 года назад
extremely useful video. I could not understand, what is target, rules, dependencies and all that weird symbols...but now I have understood!
@notprof
@notprof 2 года назад
Just incremented this like counts to 300. Very useful content, thanks a lot for sharing!
@valeriavagapova
@valeriavagapova Год назад
Love this video. Helped me get from "makefiles are black magic" to "alright this is kind of fun". I wish there was some info about target-specific variables but lovely regardless, love your way of speaking. Thanks!
@nothing6001
@nothing6001 Год назад
Thanks for the request about target-specific variables! I'm thinking of remaking a series of these, and that is useful!
@mjovanc
@mjovanc Год назад
Love your tutorials, this is awesome!
@user-mw9lg
@user-mw9lg 2 месяца назад
Thanks for the video and all the great information! A higher resolution than 480p would be lovely for fluent readability.
@adnanhashmi8092
@adnanhashmi8092 Месяц назад
Thank you for this video! This is exactly what I need.
@cusematt23
@cusematt23 8 месяцев назад
Dude … this is so good. The stuff you can find FOR FREE on the internet.
@gnzeu4tpns91
@gnzeu4tpns91 11 месяцев назад
thank you for explaining in a way that is so easy to understand
@TheActualTed
@TheActualTed Год назад
Amazing explanation, I love your teaching style. Thank you
@dmm10000
@dmm10000 Год назад
this is such a helpful video Gabriel thank you
@dennisyakovlev6197
@dennisyakovlev6197 Год назад
Excellent video! Thank you for sharing, much appreciate it
@vwarrier
@vwarrier 2 года назад
Thanks a lot! Got my makefile up and running in less than 15 minutes
@nothing6001
@nothing6001 2 года назад
Glad to hear it!
@namyalg237
@namyalg237 2 года назад
Great introduction to build systems!
@KhaledKimboo4
@KhaledKimboo4 9 месяцев назад
the remaining 5% would take you the next 10 years to learn
@baptistedury2624
@baptistedury2624 2 года назад
Thank you so much for these detailed information. I now understand a lot better this mess ^^
@vapandris
@vapandris 2 года назад
Great video, thank you! :D I only have one question left. If you want to have tests for your code/module, how would you do it? I was thinking about using only the necessairy .o files when compiling a given test, with additional .c files, that are needed for the test to compile (like test suites, Test Cases, etc.). So when you want to make a test, you'd say something like 'make DataStructsTest' and it would create the executable of the test (in this example) for some Data Structure module.
@nothing6001
@nothing6001 2 года назад
Great question. When you're testing an application, you might manually specify only the dependencies you need (assuming the application is multiple object files). However, as you want a "compile test" to be part of your tests, I'd simplify in most cases, and just have your test dependent on all of the .o files of the application. In the case that you're testing a library, you want to have a dependency on the .a or .so resulting binary, which will likely compile/link the entire library. You want this complete set of dependencies as you want your test to interact with the library in exactly the same way that a client would. In short, I'd make tests dependent on the closest thing to a final output possible.
@aarondanen3150
@aarondanen3150 9 месяцев назад
Why did it take me a month to hear about .d files. I swear nobody mentions those but it’s so confusing trying to understand something when people omit information like that. Thanks boss :)
@tanusmitadash2982
@tanusmitadash2982 2 года назад
really awesome lecture video regarding makefiles...
@nothing6001
@nothing6001 2 года назад
Thanks!
@achrafBadiry
@achrafBadiry 5 месяцев назад
Great video. came with no information and left with all. thank you
@martinlejko6155
@martinlejko6155 3 месяца назад
Great video of the basics
@edvinpap3689
@edvinpap3689 Год назад
Genuinely the best video about makefiles. In embedded environment is it okay to have a rule for flashing into target hardware or considered a bad practice?
@nothing6001
@nothing6001 Год назад
Generally it is fine. However, depending on the development environment, the commands to perform the flashing might differ. So it is not uncommon to have a shell/python script to do the flashing, and simply invoke the script from the makefile.
@edvinpap3689
@edvinpap3689 Год назад
@@nothing6001 Appreciate your guidance, thank you!
@mallninja9805
@mallninja9805 Год назад
The first half of this video is great, the second half is OK but too much "This is a magic incantation, I'm not gonna explain how or why"
@parthpanchal3843
@parthpanchal3843 2 года назад
Nice tutorial. Thanks for sharing :)
@danielezanini4716
@danielezanini4716 Год назад
Thanks for the video!! super helpful
@cangozpinar
@cangozpinar Год назад
Best resource on Make on the internet !
@markharrington5826
@markharrington5826 Год назад
Lovely explanation , Brilliant and I mean brilliant !! I wish there more of you about who can explain this with the well defined , well thought out descriptions that you have used in your presentation I understood everything you were doing Thank you PS for other people as we now in 2023 who feel AI will give you these answers then Im going to say , "No AI no matter how good you think this is will and no AI will help you and guide you to this depth and understanding This is why we need people like Gabriel Parmer especially in poorer and less educated sectors where this is no help and all controlled by finances " You need to understand the essentials of this Im pleased we still have some who have recognised this and know what is required Its not a case of how quick , how fast or , how many cuts to education our officials can make or where others see AI as a method of doing away with people especially in education Its very much a case of how the use of AI where people in positions of power need to be very clearly show just how much they dont understand and why persons such as Gabriel Parmer are very much in demand I hope this justifies all comments I make whilst I highly recommend tutors such as this which we are lucky to have If only many other people in many an industry would actually wake up to the damage they do by making the cuts they have in conjunction with the loss of real professionals in all industry even more so in teaching and training
@nothing6001
@nothing6001 Год назад
Thanks so much for the comment! I'm planning on a series of videos about system tools in the coming months. You've provided me some motivation, so thanks!
@brandonevins1934
@brandonevins1934 2 года назад
You are... THE GOAT!!!
@metaltyphoon
@metaltyphoon 2 года назад
Great video. Should have explained PHONY just in case someone has a file with the name as the target.
@koby9340
@koby9340 2 года назад
EXACTLY what I needed
@abhishekghosh1998
@abhishekghosh1998 Год назад
Really nice video indeed on makefiles.
@naluotheguy3559
@naluotheguy3559 Год назад
This is an amazing tutorial, very concisely explained. But I have a small question. I'm running on a windows machine, so if I want to utilize the rm -rf command, I have to open a WSL Ubuntu terminal, and everything works just fine. However, if I want to do "make clean" in PowerShell, using either of del or remove-item commands, "make clean" is unable to find the files its supposed to remove. I've tried to make it work but have been unsuccessful. Could I have some suggestions as to how to modify the code so that it works in PowerShell as well?
@nothing6001
@nothing6001 Год назад
I don't know any powershell, unfortunately. But this linuxhint.com/delete-files-in-powershell/ says you can simply `rm -fo names*`. Not sure if it is right, or what limitations it has. Sorry!
@naluotheguy3559
@naluotheguy3559 Год назад
@@nothing6001 Damn, thank you so much for the answer, big fan of your videos here. Apparently rm is just an alias of the remove-item cmdlet, and it does indeed have some limitations (dammit windows), so it looks like ill be sticking to wsl instead. Again, thank you so much for the answer and the content you put out, if it wasn't for your passion I wouldn't have grasped the concept of makefiles at all.
@miksatheboss6078
@miksatheboss6078 Год назад
Great job!!! Really appreciate it :D
@sksahil4374
@sksahil4374 Год назад
Great tutorial for beginners. 👍👍
@eddaly4160
@eddaly4160 Год назад
Great video. Thank you!
@bsykesbeats4013
@bsykesbeats4013 Год назад
Would creating a dependency something like: %.c:$(foreach D,$(INCDIRS),$(D)/%.h) have the same affect as using -MP -MD? (other than the fact that it doesn't create .d files of couree... I guess I'm curious the difference btwn using .d files and the above dependency.)
@nothing6001
@nothing6001 Год назад
Big difference, actually. 1. You're adding a dependency on all header files, which means a change in any of them will require recompiling all C files. What the .d files do is recompile the C files only if their specific headers are modified (i.e. not all C files include all headers). 2. it won't include the headers outside of your path. This might not matter, but does if you use libraries *and* modify those libraries. Likely this is not a big deal for you.
@tsimurdavydzenka5507
@tsimurdavydzenka5507 7 месяцев назад
You are a genius educator!
@wondetom
@wondetom Год назад
It was a great lecture, and I liked it. But one more thing I want to know is, will the same Makefile work if I have c and c++ files in my project? Or do I need to change it in some way?
@nothing6001
@nothing6001 Год назад
Great question. Generally, you can just change the makefile from using gcc to instead using g++ to compile c++ (or whatever c++ compiler you use). Other than that, I'd expect everything should be the same.
@user-qv5bo7xi9m
@user-qv5bo7xi9m 2 года назад
Great video! Informative enough.
@michaelasin6050
@michaelasin6050 Год назад
Thanks for making this:)
@ibrahimshikdaher7551
@ibrahimshikdaher7551 Год назад
Great video and description
@Skullfurious
@Skullfurious 2 года назад
Thanks for the explanation.
@Hudinibutter
@Hudinibutter 4 месяца назад
Amazing video! Thank you!
@humbertocastillo6999
@humbertocastillo6999 10 месяцев назад
this is a great video. Thank you very much!
@weithiamneo1442
@weithiamneo1442 6 месяцев назад
Is Make able to detect changes in .h files from system or compiler libraries?
@amos660
@amos660 Год назад
I am doing the exact same thing lol.. A shell script that builds a C project directory and all sub directories and a Makefile with templates. You can add the project name and contact info, git repo url, etc.. the name of the project becomes the name of the main .c.. and name the name of the executable binary.
@jerrycrane6830
@jerrycrane6830 2 года назад
At the bottom of your last makefile there was a line that started -include $(Depfiles). What did this do? Great video by the way.
@nothing6001
@nothing6001 2 года назад
It pulls in the C/C++ dependencies on header files. When you compile the C/C++ with, for example, "-MMD", it will output a dependency file postfix with *.d. It includes rules for which .c files depend on which .h files. The line you ask about simply includes the .d files in the makefile. Long story short: if you modify a .h file used by a .c file, you want to recompile the .c file. This enables make to understand which .h files each .c file depends on!
@markhache6756
@markhache6756 10 месяцев назад
That was my question as well. Thanks
@jerrycrane6830
@jerrycrane6830 10 месяцев назад
@@nothing6001 Thanks
@laujimmy9282
@laujimmy9282 10 дней назад
Yes, just what I need. Thank you
@Or.BenHaim
@Or.BenHaim 2 месяца назад
Great video!
@user-mx4oy1lf8u
@user-mx4oy1lf8u 10 месяцев назад
i have a question abut the declaration of CODEDIRS and INCDIRS. What is the meaning of the one dot "." or 2 dot ? CODEDIRS=. lib #Source code directory INCDIRS=. ./include/ # Include directory Is it important to include since i saw other people do not use it
@nothing6001
@nothing6001 10 месяцев назад
A dot means "this current directory".
@wnekuu
@wnekuu 7 месяцев назад
Thank you for that!
@etzbert
@etzbert 5 месяцев назад
Nice video, thx for sharing
@frankfix247
@frankfix247 2 месяца назад
Very good video! A couple of things though; how properly to place all build files (*.o, *.d) in its own "build" directory and the use of .PHONY. Keep up the good work!
@yeltsingtr
@yeltsingtr 2 года назад
Wonderful 👏
@wheeled_fanatic
@wheeled_fanatic 2 года назад
HI Gabriel parmer I am facing an issue I think my CFILES variable are not updated, Can u help me
@pradumnshukla6540
@pradumnshukla6540 Год назад
Thanks sir ☺️
@fuckit563
@fuckit563 4 месяца назад
its much simpler to use addprefix instead of foreach cycle for CFLAGS, isnt it?
@caiomolinari4790
@caiomolinari4790 8 месяцев назад
I rarely comment on videos, but this one slaps
@user-mw9lg
@user-mw9lg 2 месяца назад
Which Linux Distro are you using in this video?
@nothing6001
@nothing6001 2 месяца назад
Nothing fancy, just Ubuntu
@bsykesbeats4013
@bsykesbeats4013 Год назад
@5:30 how r u able to use instead of "" to #include a user created .h file?
@nothing6001
@nothing6001 Год назад
simply says "look for this header file in any of the 'include paths'". When gcc compiles a program, you can set up the include paths using the "-I" compiler flag. For example, `gcc -I. file.c` would look in the current directory (see the "." there?) for any header files included with . Another example github.com/gwu-cs-os/evening_os_hour/blob/master/f19/10.2-makefiles/02_simple_makefile/Makefile#L2 and a more complex one github.com/gwu-cs-os/evening_os_hour/blob/master/f19/10.2-makefiles/03_featureful_makefile/Makefile#L10
@bsykesbeats4013
@bsykesbeats4013 Год назад
@@nothing6001 ahhh thank you! got it working!
@afanasin_egor
@afanasin_egor 9 месяцев назад
Thanks man!
@FelixNielsen
@FelixNielsen Год назад
First of all, thank you ever so much for your valiant effort, it really is appreciated. However, I rather think that I have little choice, but to accept that I'll never really grasp this subject. I like to place myself in the category of "actual programmer", by which I imply nothing in regards to occupation, knowledge, talent, experience or intellect. I understand the language of the computer, and it is not abstract, not in the slightest. It is procedural and exceedingly simplistic. For crying out loud, I have issues with something as fundamental as the foreach loop, whereas I comprehend the workings of a "normal" for loop perfectly. The mechanics are visible, for the most part. I can bit twiddle like no other, but ask me to do something simple and mundane to a string, or char array, which obviously I much prefer, I'm done for, at least you won't get a quick answer, and don't even get me started on OOP, polymorphism and god knows what. I suppose this is just who I am. It has it's pros, like being able to do and comprehend certain things that many, very experienced programmers/developers, don't, and cons, like not being particularly useful to the industry, in the modern world, but I digress. To simplify things, I have a few very simple questions, which I know there are no simple answers to, but I'd like to hear your opinion. Splitting a large project into multiple smaller modules, if that is indeed the term, or alternatively libraries, and preferably a main source file, with a single, or at least a few headers, what would be a good hierarchical folder structure, not least to make Make, easier to work with? Is it in any way shape or form, a good ide to have the main Makefile, so to speak, invoke other Makefiles, which could also, to my mind at least, simplify things(?) I'm thinking that treating each "module" as it's own separate project, with a dedicated Makefile, which can them be invoked as needed, in the larger scheme of things, What are the potential pitfalls? It this something that is actually done? As far as I know, it can be done, but as of yet, I have seen no examples of it, so presumably it is something that is not actually done, and presumably there are good reasons why. I've very much like to know. Last, but not least, do you know of any source, online or otherwise, which takes you from the very basics, through advanced, and actually explains things on the way? This is by no mean meant as a criticism of you, if anything, you're the first of many, who have actually attempted to explain anything, otherwise it has just been: "Do this, and magic happens.", and in a few key areas, you've had some success, which is impressive. Alas, actual comprehension still seems unattainable, thus this rather longwinded diatribe, hoping to for some... well, hope. I firmly believe that the praise expressed by just about everyone other than me, is well deserved, but ya, there you have it. Thanks and best regards.
@nothing6001
@nothing6001 Год назад
Thank you so much for the thought out comment!!! I don't know how long you've been programming, but it honestly sounds like you're riding the learning curve up programming, bit by bit. Very little of what we do is natural, and it all takes a concerted effort to learn. You also can't really just learn all of it at once, as there are many conceptual stepping stones to get to many concepts. Even for those going through a well-designed curriculum that walks them through those stepping stones, it is very hard, and takes a lot of time. All of that is to say this: have patience, and cut yourself some slack. It is hard, and takes time, but is all learnable with time and effort. How you break up the C/C++ and header files, and how to you break up the Makefiles is very project specific. For the source files, you kind of want to think of breaking up c/c++ files into logically cohesive units. Think: the functions that "bin" together, should be in the same file. There are few rules around how big files should be, or any of that, but generally keeping the logic within them manageable and all self-related is the goal. We split up Makefiles, practically, pretty rarely. A single, top-level makefile can do quite a bit. I can build files in subdirectories, move them around, create executables, etc... The exception to this is if different parts of your project require vastly different ways of being built. For example a library might be separate from your main application code, might be separate from your testing code, each using different Makefiles. But honestly, I don't see this often. In our OS, we have huge hierarchies of Makefiles and I still don't know if that was the right idea ;-) If you're in the root of your project, and you cant to cause a Makefile in a subdirectly (foo) to the rule "all", you use the following in one of your rules: make -C foo/ all For example, github.com/gwsystems/composite/blob/main/src/Makefile#L20-L21 will execute the Makefile in the "components" directory, and execute the "component" rule. All that said, I'd recommend sticking to a single makefile till it feels like it is being pulled into too many directions. Only then use multiple. I don't know of great resources to learn a lot of this. Because of that, I recommend simply using it in one of your projects. Start out simple, then dive further in when you have to. The make references are complex, and hard to understand. But it often gives you enough information to try some stuff out, and see what sticks. I wish I had better news on this, but build systems are one of those things that most people learn by doing. I don't know if any of this is kinda what you're looking for, but a class I taught a year ago was on system programming. Using UNIX APIs and what-not. Might be useful? Might not. Find links here: gwu-cs-sysprog.github.io/ github.com/gwu-cs-sysprog Best of luck! Make sure to allow yourself the time to learn. We all start off not knowing much, and not being able to dive deep into complex topics (I always learned quite slowly). Before you know it, you'll know enough to start learning quickly. Your rate of learning only increases as you learn more. But to get to the part of that learning curve that feels "good" takes time. Some thoughts on this: www2.seas.gwu.edu/~gparmer/posts/2018-06-22-compounded-self-improvement.html
@FelixNielsen
@FelixNielsen Год назад
@@nothing6001 Well, that was a heck of a lot more than I expected, though of course I didn't expect much, given the age of the video. I have been developing and programming for decades really, though apart from 3 years in a Job were my official title was indeed IT developer, though I didn't do much programming, never professionally, for the very simple reason, that I simple cannot handle the excessive, and in my not so humble opinion unnecessary and counter productive, abstraktion. Perhaps it has something to do with my autism, who know, but it is what it is. At any rate, I started out some 25 years ago or so, I even did C++, when when it was still the case that one could actually manage to learn it, before it changed into something utterly unrecognizable, and when that happened, I landed on C, and have never looked back. However, Build Systems have never been foremost among my interest. If it has been warranted, I have used make, simply by copying what others have done. There has never been any doubt in my mind, that were I to attempt to comprehend the subject, I would fail miserably, but now I actually rather need to, if I want to get anything done in regards to my newest project, which is the most complex I have attempted so far, and that is actually saying something. At any rate, I am beyond grateful for your effort, answering my, probably not to easy to comprehend ramblings, and I will delve deeper into your answer, when I get the time, and perhaps post some follow up questions, if you don't mind. I have of course subbed, and hope to see some activity at some point. Thanks again, and best regards.
@nothing6001
@nothing6001 Год назад
@@FelixNielsen Yeah, I want to find the time to make a series of videos that are shorter, and cover "levels" of different technologies. Time is always the problem. This video was just a twitch stream for a class, but I think I could do much better if I focused on the content. Regardless, we'll see if I find the time. If you're interested in OS topics, my video series on that topic are better thought out.
@FelixNielsen
@FelixNielsen Год назад
@@nothing6001 Sounds good. Should you need some sparing or ideas, I am actually, though it doesn't always seems like it, quite the tool, in a positive way, of course. I myself, have been wanting to do a series for a long time now, focusing not so much on a language, paradigmes, specific tools, etc., but on the very fundamentals, on achieving comprehension, problem solving, alternative "out of the box" thinking, heavily biased by my disgust for the prevalent abstraction of the day, obviously. Pretty much inspired by Charles Petzold and his book "Code: The Hidden Language of Computer Hardware and Software", that I read so many years ago, and was the one book that truly lead me to comprehend the inner working of computers, well, comprehend may be a strong word, but strong fundamentals at least, that I fear has not been prioritized for quite some time, and also, more than anyting, fueled my entusiasm. I would describe it as a children's book, to be honest. Even the most tech illiterate, can understand it, and I dare say that even the most praised and talented programmers/developers, might well learn something. Then again, it has been a very long time ago, so perhaps it is utter crap. All I can say is, that had it not been for that book, I probably wouldn't be able to tell and Iphone from a remote control today. Arg, I'm doing it again. I just cannot sit down in front of a computer, without writing a small novel, my apologies, but my central point remains. Chances are that I will never actually get to that point, but it would please immensely to experience someone else doing so. There was a time where I was very much into exactly that, OS programming. I stil visit osdev.org, once in a blue moon, and should you ever find yourself there, you might want to look up the ancient, though presumably still incoherent, ramblings, of one Zacariaz. I may well watch all you have to offer, though chances are *(NULL&(void*)0)--, that I'll ever convince myself, that starting down that path again, is a good idea, in any way shape or form. Best of luck with it all. I'll be watching.
@nejathakan5521
@nejathakan5521 Год назад
Amazing ❤
@david_1036
@david_1036 Год назад
wait how did you get there mine doesn't look like that what
@Fitalup
@Fitalup Год назад
WOW ,Thank you !
@hilmansantika4873
@hilmansantika4873 Год назад
TNice tutorials was the first video I saw to get into soft soft, tNice tutorials year in May. Today I published a Resetup from XXXTentacion "Moonlight".
@evans8245
@evans8245 Год назад
Can anyone tell how to move .o files into object dir and .d files into own directory ? plis n thx
@KurtVanBever
@KurtVanBever 8 месяцев назад
Hi there, Why is there a difference in declaring the directories? I mean, why are both directories not addressed in the same way? Like either: CODEDIRS=. lib INCDIRS=. include or else: CODEDIRS=. ./lib/ INCDIRS=. ./include/
@nothing6001
@nothing6001 8 месяцев назад
No fundamental reason. Your suggestion that they should be consistent is correct! There are always improvements to be made to code, and you point out a good place where the current Makefile should be cleaned up.
@KurtVanBever
@KurtVanBever 8 месяцев назад
@@nothing6001 oh OK. I thought I was missing something and that there was a hidden purpose to it. My bad 😅
@parsecscopeking2580
@parsecscopeking2580 9 месяцев назад
Are you using emacs?
@nothing6001
@nothing6001 9 месяцев назад
Yup
@EliasOjeda-mv6cg
@EliasOjeda-mv6cg Год назад
great video, i needed to learn how to use makefiles to stop relying only on the ide to link the files. thanks and why is 42 the meaning of life and anything we need? hahaha
@nothing6001
@nothing6001 Год назад
Just a casual reference to the hitchhiker's guide to the universe. Funny book.
@gudneighbour
@gudneighbour Год назад
incremented to 800 :)
@hyppolithos
@hyppolithos Год назад
why is your /home file called ycombinator ?
@nothing6001
@nothing6001 Год назад
This is not as interesting as you'd think. It is my username (of course), and I usually choose my username on different computers based on programming language constructs (like the y-combinator that is the theoretical foundation for repetition).
@xty007
@xty007 Год назад
👏👏👏
@Seff2
@Seff2 2 года назад
well the rule for x.o calls the rule for x.c... but there is no rule for x.c. How does this work then?
@nothing6001
@nothing6001 2 года назад
You don't need a rule to build the .c file because it already exists! You only need the rules to compile the source files into the objects. Hope that helps.
@strangelf
@strangelf Год назад
I’m not an expert (that’s what I’m here for), in this case doesn’t x.c count as a dependency?
@jousboxx9532
@jousboxx9532 2 года назад
I wonder what text editor he's using
@nothing6001
@nothing6001 2 года назад
emacs, but everyone should just use what they find comfortable.
@radio_electronics4047
@radio_electronics4047 9 месяцев назад
This is an unusual use of header files. Usually you have a corresponding .h file for every .c file except main.
@greencoder1594
@greencoder1594 Год назад
[20:52] Hitting the dependency wall 🤫 [33:10] When your IDE tries to be smarter than it can be. 🧐
@sad0n3
@sad0n3 2 года назад
emacs setup plz?
@nothing6001
@nothing6001 2 года назад
github.com/gwu-cs-os/gwu_os_editors/tree/master/emacs I've changed it significantly since as that is a ~20 year old configuration before use-package changed the game. Regardless, hope it is useful!
@pnuema1.618
@pnuema1.618 Год назад
Your terminal settings and the use of key bindings make it hard to follow where you are.
@gudneighbour
@gudneighbour Год назад
when u think u know everything, loops hit u and u can be as lazy as not even writing the files but just the directory they are in
@ii7mdj_353
@ii7mdj_353 7 месяцев назад
Ngl you kinda sound like Joe from family guy 😂.
Далее
Linux File System/Structure Explained!
15:59
Просмотров 4 млн
🎙ПОЮ твои ЛЮБИМЫЕ ПЕСНИ💥
3:22:10
31 nooby C++ habits you need to ditch
16:18
Просмотров 726 тыс.
why do header files even exist?
10:53
Просмотров 361 тыс.
Comparing C to machine language
10:02
Просмотров 5 млн
How does an OS boot? //Source Dive// 001
50:22
Просмотров 380 тыс.
CMake vs Make - A developer's perspective
8:16
Просмотров 3,6 тыс.
understanding the Makefile
23:45
Просмотров 3,8 тыс.
So You Think You Know Git - FOSDEM 2024
47:00
Просмотров 987 тыс.
Master Pointers in C:  10X Your C Coding!
14:12
Просмотров 280 тыс.
keren sih #iphone #apple
0:16
Просмотров 1,7 млн
Ноутбук без экрана
0:22
Просмотров 16 тыс.
Face ID iPhone 14 Pro
0:59
Просмотров 14 тыс.