I just used Xcode. Any reason not to use that instead of getting GCC from MacPorts? It built Catalina fine for me.
Xcode should work as well. I used it the first time I built Catalina - but (from memory) I had to use a "hacked" version of that as well. For some reason Apple has some weird licencing on Xcode that prevented me downloading or using the "official" version.
I never really understand Apple software licensing and distribution - it seems primarily designed to prevent anyone doing anything useful with their computers unless you agree to give them your firstborn.
Apple makes the current Xcode available for free. For each version of OSX, there is a window of time where you can get the version of xcode designed for it.
If you want anything else, you pay for developer access, and you can get any version you need.
Older ones are out there, not hard to find, and they work just as if a person got them when Apple made them available.
The net effect is people can do what they want with few hassles, and Apple makes it's dollars to fund Xcode from pros who need more than casual access and support for Xcode.
The net effect is people can do what they want with few hassles, and Apple makes it's dollars to fund Xcode from pros who need more than casual access and support for Xcode.
But I didn't actually want Xcode, I just wanted gcc, which should be free. But (at least at the time I tried) I couldn't seem to get gcc without paying for Xcode. Which of course I didn't - I loaded an "unofficial" version of Xcode instead the first time, and the second time I used macports.
If there is a simple and legal way to just get gcc, Apple certainly don't make it obvious!
I thought Apple used the Clang compiler now a days. Works as well as GCC and has all the same command line options. Should just be a drop in replacement.
I thought Apple used the Clang compiler now a days. Works as well as GCC and has all the same command line options. Should just be a drop in replacement.
I have MAX OS X 10.6.8 and i do not see why we computer user have to always upgrade to the latest OS to run a compiler. But then i do not control the world so i am going to continue to try and get Catalina built on this old, intel, based MAC.
I will try multiple ways and get back with you by the end of the week.
cheers,
rich
p.s. No disrespect to any of you. I get frustrated with the manufacturers that do not understand backward compatibility, which is only bad in the extreme. But then some might think keeping a computer, like i have, for 8 years is extreme.
8 years is quite reasonable. The AMD64 I'm typing this on is 8 years old. With an SSD and cheap new video card it does everything I need nearly as well as the shiny new machines in my office.
The OS is brand new though. I just did an "apt-get upgrade"
I really would not want to be struggling with an ancient OS except out of historical curiosity.
Actually, you don't have to upgrade. You can pay Apple, or get Xcode from somebody who did get it during the free access window when that OS was current.
Apple will support what is current, and now that means only getting command line tools, if you don't want xcode.
If you are running older OSes, and I am doing that at the moment myself, then you are on your own, or you can buy access.
Additionally, the OSS Darwin layer of OSX means doing whatever you want to do, however you want to do it. However, if you want to build for the Apple GUI, etc... then you need the Apple headers and such.
Otherwise, build it as a Linux application would be built, and you can use the X Window system, whatever window manager you want to, and so forth.
I think that latter bit gets hard for people to understand. Apple doesn't prevent any Unix / Linux stuff from working. It does add on top of that for the nice GUI, and iOS and friends.
Frankly, that they flat out give Xcode away is a heck of a deal.
SGI did a similar thing way back when. You could treat IRIX as a UNIX and load up your own stuff, package manager, window manager, etc... And getting gcc meant installing yourself, or getting an install package made by somebody who used the SGI tools to work with the SGI Interactive Desktop and related tools...
Or, you could download MIPS Pro, and build anything you want for free, up until near the end, including gcc, which is what a lot of people did, due to the free MIPS Pro littering your output with "get a license" type messages.
BTW, that MIPS Pro license did deliver better performance than gcc did at that time, but gcc would often be able to make smaller code...
Today, Apple is doing it about the same way. Rather than ask Apple to support things it doesn't have control over, simply get them from the community of people doing them.
Sometimes Apple will put things a whole lot of people need into official distribution, like they did with X, until the X Darwin project did a better job, at which point Apple handed the ball back to them.
Once you understand that, knowing how and where things might be found, or what a best practice may be is much simpler. IMHO, of course.
p.s. No disrespect to any of you. I get frustrated with the manufacturers that do not understand backward compatibility, which is only bad in the extreme. But then some might think keeping a computer, like i have, for 8 years is extreme.
I agree! I still have several computers around the place at least that old! **
Ross.
** TIP: If you still have (as I do) some old machines running Windows XP, uninstall Micro$oft Security Essentials immediately and put on one of the freeware antivirus programs (I use AVG Free). If you let your old XP machines update themselves with the last official updates it makes XP unbootable. I'll be charitable and assume this is accidental - Micro$oft appear to have tried to turn off Security Essentials and install "NagWare" for Windows 8.1 in its place - but they screwed up! I've had to rescue several XP machines recently, all with the same symptoms - ran fine for years until they did an update after Micro$oft's "XP must die!" date. Then they all failed to boot. All were rescued by restoring the system back to before their most recent Micro$oft updates, then removing Security Essentials.
I agree! I still have several computers around the place at least that old! **
Ross.
** TIP: If you still have (as I do) some old machines running Windows XP, uninstall Micro$oft Security Essentials immediately and put on one of the freeware antivirus programs (I use AVG Free). If you let your old XP machines update themselves with the last official updates it makes XP unbootable. I'll be charitable and assume this is accidental - Micro$oft appear to have tried to turn off Security Essentials and install "NagWare" for Windows 8.1 in its place - but they screwed up! I've had to rescue several XP machines recently, all with the same symptoms - ran fine for years until they did an update after Micro$oft's "XP must die!" date. Then they all failed to boot. All were rescued by restoring the system back to before their most recent Micro$oft updates, then removing Security Essentials.
There are some places where this sort of Laziness/Greed, (which accelerates the waste stream), is treated as it should be, and Micro$oft is legally obliged to provide HW compatible operating systems.
They can charge for a Standard OS, but must give user the ability to install an older OS, that the HW can actually run.
Makes sense to extend the life of old HW.
@Ross, thanks for that tip. My Propeller XP dev machine is currently turned off. I've been using a Mac.
Had a hunch the "final" updates wouldn't go well, so I've sequestered it during this time. I'll be sure and boot sans network and deal with MSE, which is too bad, because I love MSE.
Probably, I'll run it with nothing, and have it just not access the Internet. That does mean upgrading the VM I'm running on the Mac to Windows 7, or doing something similar with it now too. Probably, I'll do the latter and just remove it's default gateway, so it's offline as well, but still able to interoperate with the Mac host.
Seems to me, this is a great time to put Linux on older machines. I am seriously tempted now. That old T60P runs Linux great. I've just got some windows tools to deal with on that one. Licenses paid, etc...
This whole event may cause me to just map skills over again and now that we've got Simple IDE and things like Sublime able to work in Linux, as opposed to the last time I was full Linux, it's looking more like the time to do this on Unix again.
Since I've changed work, my current role doesn't require much in the way of Windows now. Need Office, but I really don't care what Office it is, nor what it runs on, 7, 8, whatever. VM?
Prop stuff can go UNIX, and MAC OS...
Anyway, great tip. I've not paid any attention, other than to shut the machine off for a bit. I appreciate learning what I just did.
Slight thread drift but it is the reason I avoid any flavor of C like the Plague. I have this unique position that with the amount of horsepower a modern PC has, it should work for me and not me for it.
I have spent years mainly with a little spin and a few mega tons of PASM and could do anything I wanted with those two languages for the Prop. While VB6 or VB.net would have been my choice for a higher language SPIN is quite good.
Anyway I decided to try for about the 5th time to dip my toes into the cesspool of C. using SimpleIDE and sure enough just like my first experience with Borland back when I had a full head of hair, I end up chasing $^@^@&#.h and @$^^.h files because the Build cannot find them.
Maybe instead of constantly developing more programming languages we should just concentrate on making the tried and true work. How many languages do we really need to control 32 I/O????????????????????
I just tried to copy/paste the error from SimpleIDE and of course that function does not work. It initially could not find SimpleTools.h and I took the program by the hand and told it where to find that and now it cannot find Simplei2c.h.
Slight thread drift but it is the reason I avoid any flavor of C like the Plague. I have this unique position that with the amount of horsepower a modern PC has, it should work for me and not me for it.
This is a fair point, but you have to remember that in comparison to most modern languages C just barely qualifies as being a "high level" language at all! It was originally intended to be a small, efficient and deliberately low-level language, designed to do a very specific job (i.e. to write operating systems).
Its remarkable longevity is due mainly to the fact that even now a significantly better language has not been developed for that particular niche, and also because the C language has managed to avoid all the expensive and irrelevant (i.e. as in "irrelevant to its original purpose") additions and extensions that many other languages have.
So while it is great for "nuts and bolts" programming, it is not a particularly "friendly" or "forgiving" language, and there is only so much that can be done by adding graphical development tools.
I find the best "integrated development environment" for C programming is a command-line prompt, a fixed-width font text editor, a sheet of paper, a pencil, and a hexadecimal calculator. If you want to get really fancy, add a soldering iron.
I find the best "integrated development environment" for C programming is a command-line prompt, a fixed-width font text editor, a sheet of paper, a pencil, and a hexadecimal calculator.
This is true for a lot of things Ross. Funny how far things have come, yet the basic, classic tools we think and work with still punch well above their weight.
Them's fightin' words. Especially on C compiler thread
Finding header files is a pain but it's hardly C's fault. All languages that support multiple source files have to be told where to find them.
Comparing VB and Spin is a bit odd. One of them is a high level language and the other is of a lower level than C. (I leave it to the reader to judge which is which.)
Maybe instead of constantly developing more programming languages we should just concentrate on making the tried and true work.
I agree. That's why the world has been using C/C++ for four decades. They have been honed to perfection. (Well, apart from C++ that is:)
When it all gets too much you can always code in VB, or Python or Java etc. Which are all created using C/C++ of course.
I just tried to copy/paste the error from SimpleIDE and of course that function does not work. It initially could not find SimpleTools.h and I took the program by the hand and told it where to find that and now it cannot find Simplei2c.h.
I seem to have run into the same problem. I suppose there is a file that holds the error report, but I have yet to locate it...
Reading the error report in a tiny window that I have to both scroll up and down and left and right is annoying if the report is more than a few lines long.
I seem to have run into the same problem. I suppose there is a file that holds the error report, but I have yet to locate it...
Reading the error report in a tiny window that I have to both scroll up and down and left and right is annoying if the report is more than a few lines long.
How long do people stare at the build status window before thinking about clicking on it? How many buttons does the mouse have? At least 2 if you're lucky (not a mac user), try them both? I've considered adding a support button. Wonder how many users would think to click on that? I'm guessing as many as those who would think to read the user guide.
A fair number of people won't click to explore. Common problem. A common root cause is they simply didn't understand it was clickable, and they get there by having gotten into trouble just clicking around in the past.
A solution is to put something there that encourages a click. A dynamic thing helps.
How long do people stare at the build status window before thinking about clicking on it? How many buttons does the mouse have? At least 2 if you're lucky (not a mac user), try them both? I've considered adding a support button. Wonder how many users would think to click on that? I'm guessing as many as those who would think to read the user guide.
==========================================
Well I left clicked, left double clicked, right clicked, clicked my heals and turned around 3 times and said there is no place like "c" but the magic copy never occurred.
My frustration with "C" historically (mainly from the syntax) just boiled over last night given I did a fresh install of the IDE on a PC which never had a copy of SimpleIDE and accepted every default install value and it could not find itself. Even a blind squirrel finds a nut occasionally.
In writing many huge programs for industry with a combination of Windows/Linux (very little), VB.x, multi flavors of assembly, multi flavors of ladder logic, SPIN I find it amazing, for example, something as simple as the "=" sign has been turned into a tower of babel experiment in various languages when again with all the horsepower at our finger tips the @&**#@%$ compiler should figure out "A=5" means A=5 and "If A=5..." then this is a comparison. No, somebody had to put their thumb print on the syntax so we have, depending upon the language: "=", "==", ":=".
... something as simple as the "=" sign has been turned into a tower of babel experiment in various languages when again with all the horsepower at our finger tips the @&**#@%$ compiler should figure out "A=5" means A=5 and "If A=5..." then this is a comparison. No, somebody had to put their thumb print on the syntax so we have, depending upon the language: "=", "==", ":=".
Assignment and comparison are two different things. Why should they have the same operator?
Wulitzer,
Again, don't confuse the tool with language.
...the "=" sign has been turned into a tower of babel experiment...
With your programming experience you should be taking this in your stride by now.
Mathematically "=" is mostly used as a statement of fact.
"A = 5" means the value of A is 5.
Not assignment: "Set the value of A to 5"
Not comparison: "Compare the value of A and 5 and give me a value of true or false as a result"
Of course most other operators are misused in programming languages as well. Mathematically "+" means add to things together, "not add them together and give me the result except when the size of the result exceeds the machines number range, in that case give me an incorrect result."
Anyway you are going to love JavaScript:
A = B; // Means an assignment
But in an "if" statement:
A = B // An assignment and test the result for true.
"3" == 3 // True. Types get converted before the comparison.
"3" === 3 // False. Compare types and the values are the same.
Comments
Xcode should work as well. I used it the first time I built Catalina - but (from memory) I had to use a "hacked" version of that as well. For some reason Apple has some weird licencing on Xcode that prevented me downloading or using the "official" version.
I never really understand Apple software licensing and distribution - it seems primarily designed to prevent anyone doing anything useful with their computers unless you agree to give them your firstborn.
Ross.
If you want anything else, you pay for developer access, and you can get any version you need.
Older ones are out there, not hard to find, and they work just as if a person got them when Apple made them available.
The net effect is people can do what they want with few hassles, and Apple makes it's dollars to fund Xcode from pros who need more than casual access and support for Xcode.
But I didn't actually want Xcode, I just wanted gcc, which should be free. But (at least at the time I tried) I couldn't seem to get gcc without paying for Xcode. Which of course I didn't - I loaded an "unofficial" version of Xcode instead the first time, and the second time I used macports.
If there is a simple and legal way to just get gcc, Apple certainly don't make it obvious!
Ross.
Clang for Mac is available here : http://llvm.org/releases/download.html
Seems to be only available in binary form for OSX 10.9 - which I don't have (but maybe richaj45 does).
I don't think you can use the earlier versions of clang to compiler Catalina, since it needs something compatible with gcc 4.4 or later.
I think that's why I ended up using macports.
Ross.
Looks familiar - I think that may be where I got my copy of Xcode the first time around. If not, then some similar Xcode hack site.
You really have to be a detective, a lawyer, a software engineer and a hacker to write software for OSX!
Ross.
I have MAX OS X 10.6.8 and i do not see why we computer user have to always upgrade to the latest OS to run a compiler. But then i do not control the world so i am going to continue to try and get Catalina built on this old, intel, based MAC.
I will try multiple ways and get back with you by the end of the week.
cheers,
rich
p.s. No disrespect to any of you. I get frustrated with the manufacturers that do not understand backward compatibility, which is only bad in the extreme. But then some might think keeping a computer, like i have, for 8 years is extreme.
The OS is brand new though. I just did an "apt-get upgrade"
I really would not want to be struggling with an ancient OS except out of historical curiosity.
Apple will support what is current, and now that means only getting command line tools, if you don't want xcode.
If you are running older OSes, and I am doing that at the moment myself, then you are on your own, or you can buy access.
Additionally, the OSS Darwin layer of OSX means doing whatever you want to do, however you want to do it. However, if you want to build for the Apple GUI, etc... then you need the Apple headers and such.
Otherwise, build it as a Linux application would be built, and you can use the X Window system, whatever window manager you want to, and so forth.
I think that latter bit gets hard for people to understand. Apple doesn't prevent any Unix / Linux stuff from working. It does add on top of that for the nice GUI, and iOS and friends.
Frankly, that they flat out give Xcode away is a heck of a deal.
SGI did a similar thing way back when. You could treat IRIX as a UNIX and load up your own stuff, package manager, window manager, etc... And getting gcc meant installing yourself, or getting an install package made by somebody who used the SGI tools to work with the SGI Interactive Desktop and related tools...
Or, you could download MIPS Pro, and build anything you want for free, up until near the end, including gcc, which is what a lot of people did, due to the free MIPS Pro littering your output with "get a license" type messages.
BTW, that MIPS Pro license did deliver better performance than gcc did at that time, but gcc would often be able to make smaller code...
Today, Apple is doing it about the same way. Rather than ask Apple to support things it doesn't have control over, simply get them from the community of people doing them.
Sometimes Apple will put things a whole lot of people need into official distribution, like they did with X, until the X Darwin project did a better job, at which point Apple handed the ball back to them.
Once you understand that, knowing how and where things might be found, or what a best practice may be is much simpler. IMHO, of course.
I agree! I still have several computers around the place at least that old! **
Ross.
** TIP: If you still have (as I do) some old machines running Windows XP, uninstall Micro$oft Security Essentials immediately and put on one of the freeware antivirus programs (I use AVG Free). If you let your old XP machines update themselves with the last official updates it makes XP unbootable. I'll be charitable and assume this is accidental - Micro$oft appear to have tried to turn off Security Essentials and install "NagWare" for Windows 8.1 in its place - but they screwed up! I've had to rescue several XP machines recently, all with the same symptoms - ran fine for years until they did an update after Micro$oft's "XP must die!" date. Then they all failed to boot. All were rescued by restoring the system back to before their most recent Micro$oft updates, then removing Security Essentials.
There are some places where this sort of Laziness/Greed, (which accelerates the waste stream), is treated as it should be, and Micro$oft is legally obliged to provide HW compatible operating systems.
They can charge for a Standard OS, but must give user the ability to install an older OS, that the HW can actually run.
Makes sense to extend the life of old HW.
Had a hunch the "final" updates wouldn't go well, so I've sequestered it during this time. I'll be sure and boot sans network and deal with MSE, which is too bad, because I love MSE.
Probably, I'll run it with nothing, and have it just not access the Internet. That does mean upgrading the VM I'm running on the Mac to Windows 7, or doing something similar with it now too. Probably, I'll do the latter and just remove it's default gateway, so it's offline as well, but still able to interoperate with the Mac host.
Seems to me, this is a great time to put Linux on older machines. I am seriously tempted now. That old T60P runs Linux great. I've just got some windows tools to deal with on that one. Licenses paid, etc...
This whole event may cause me to just map skills over again and now that we've got Simple IDE and things like Sublime able to work in Linux, as opposed to the last time I was full Linux, it's looking more like the time to do this on Unix again.
Since I've changed work, my current role doesn't require much in the way of Windows now. Need Office, but I really don't care what Office it is, nor what it runs on, 7, 8, whatever. VM?
Prop stuff can go UNIX, and MAC OS...
Anyway, great tip. I've not paid any attention, other than to shut the machine off for a bit. I appreciate learning what I just did.
A friend of mine did this, and it will run everything, but you do have to load a lot not included.
MS has contracts out there which require support, but it does not have consumer obligations.
I have spent years mainly with a little spin and a few mega tons of PASM and could do anything I wanted with those two languages for the Prop. While VB6 or VB.net would have been my choice for a higher language SPIN is quite good.
Anyway I decided to try for about the 5th time to dip my toes into the cesspool of C. using SimpleIDE and sure enough just like my first experience with Borland back when I had a full head of hair, I end up chasing $^@^@&#.h and @$^^.h files because the Build cannot find them.
Maybe instead of constantly developing more programming languages we should just concentrate on making the tried and true work. How many languages do we really need to control 32 I/O????????????????????
I just tried to copy/paste the error from SimpleIDE and of course that function does not work. It initially could not find SimpleTools.h and I took the program by the hand and told it where to find that and now it cannot find Simplei2c.h.
This is a fair point, but you have to remember that in comparison to most modern languages C just barely qualifies as being a "high level" language at all! It was originally intended to be a small, efficient and deliberately low-level language, designed to do a very specific job (i.e. to write operating systems).
Its remarkable longevity is due mainly to the fact that even now a significantly better language has not been developed for that particular niche, and also because the C language has managed to avoid all the expensive and irrelevant (i.e. as in "irrelevant to its original purpose") additions and extensions that many other languages have.
So while it is great for "nuts and bolts" programming, it is not a particularly "friendly" or "forgiving" language, and there is only so much that can be done by adding graphical development tools.
I find the best "integrated development environment" for C programming is a command-line prompt, a fixed-width font text editor, a sheet of paper, a pencil, and a hexadecimal calculator. If you want to get really fancy, add a soldering iron.
Ross.
This is true for a lot of things Ross. Funny how far things have come, yet the basic, classic tools we think and work with still punch well above their weight.
Are your punch cards numbered?
I still prefer VIM over all IDEs, but QtCreator is a close contender.
Yes to the command line and the paper pencil. No to the calculator. Prefer a simple interactive language, or program running in another window.
There are schools that bring people in via simple CLI, and that is totally worth doing.
Note I said punch well above their weight. I didn't say better.
The little I've used Xcode and Visual Studio tells me they rock hard. One would think great enough to put the basics to bed. But, they don't.
You know I use a variety of things. GUI here, CLI there. If I want to, vi is fine, along with a shell and a reasonable serial connection.
Right now, I'm liking Sublime, simple build scripts and a CLI + a few apps, like that calculator.
None of this stuff needs to be exclusive. And where the basics work well, it isn't, and I value that.
Education up and coming people in ways that don't make this kind of thing clear is a mistake.
Use what you want. Ideally, little gets in the way of that, right?
Finding header files is a pain but it's hardly C's fault. All languages that support multiple source files have to be told where to find them.
Comparing VB and Spin is a bit odd. One of them is a high level language and the other is of a lower level than C. (I leave it to the reader to judge which is which.) I agree. That's why the world has been using C/C++ for four decades. They have been honed to perfection. (Well, apart from C++ that is:)
When it all gets too much you can always code in VB, or Python or Java etc. Which are all created using C/C++ of course.
I seem to have run into the same problem. I suppose there is a file that holds the error report, but I have yet to locate it...
Reading the error report in a tiny window that I have to both scroll up and down and left and right is annoying if the report is more than a few lines long.
A solution is to put something there that encourages a click. A dynamic thing helps.
I'm guessing one less than that number since I've read the user guide and already know to click there.
Maybe they are expecting a Facebook-esque user experience......."Click Here to get a prize"
Well I left clicked, left double clicked, right clicked, clicked my heals and turned around 3 times and said there is no place like "c" but the magic copy never occurred.
My frustration with "C" historically (mainly from the syntax) just boiled over last night given I did a fresh install of the IDE on a PC which never had a copy of SimpleIDE and accepted every default install value and it could not find itself. Even a blind squirrel finds a nut occasionally.
In writing many huge programs for industry with a combination of Windows/Linux (very little), VB.x, multi flavors of assembly, multi flavors of ladder logic, SPIN I find it amazing, for example, something as simple as the "=" sign has been turned into a tower of babel experiment in various languages when again with all the horsepower at our finger tips the @&**#@%$ compiler should figure out "A=5" means A=5 and "If A=5..." then this is a comparison. No, somebody had to put their thumb print on the syntax so we have, depending upon the language: "=", "==", ":=".
Assignment and comparison are two different things. Why should they have the same operator?
Again, don't confuse the tool with language. With your programming experience you should be taking this in your stride by now.
Mathematically "=" is mostly used as a statement of fact.
"A = 5" means the value of A is 5.
Not assignment: "Set the value of A to 5"
Not comparison: "Compare the value of A and 5 and give me a value of true or false as a result"
Of course most other operators are misused in programming languages as well. Mathematically "+" means add to things together, "not add them together and give me the result except when the size of the result exceeds the machines number range, in that case give me an incorrect result."
Anyway you are going to love JavaScript: