Mac Os 10.14 Broken C++ Std Library

Broken c std libraries on macOS High Sierra 10.13. (10.14) install to a new machine (same OS). Tried tons of stuff, and then tried this as a last resort. 2020-4-2  First thing we want to do is creating a thread object (worker thread) and give it a work to do in a form of a function. The main thread wants to wait for a thread to finish successfully. So, we used join. If the initial main thread didn't wait for the new thread to finish, it would continue to the. Android LLVM libc static library STL broken with VS15.6.0 fixed in: visual studio 2017 version 15.6.4 project C windows 10.0 visual studio 2017 version 15.6 Ralf. 2019-11-25  Does anyone have ideas about how to view all the default include path of C library in Mac OS X? C c xcode macos. Share improve this question. Asked Nov 8 '13 at 5:26. I tried your ways and found that only gcc -x c -v -E /dev/null works for Mac OS 10.12.5. – Robert Oct 10 '17 at 14:49. I have a 2nd broken spoke after 300km on a. Port install -vsn boost configure.compiler=macports-gcc-4.8 port install binutils oniguruma5 autoconf automake cmake libvpx libelf tbb libevent pcre libxslt mysql55-connector-cpp elftoolchain google-glog libzip protobuf-c protobuf-cpp ncurses.

Posted on January 13, 2019 by Paul

Updated 24 September 2019

In this article I will show you how to use the C++17 std::filesystem library to write a simple file watcher or file monitor. The advantage of using the C++17 std::filesystem library is that your code will be portable on all operating systems for which a C++17 compiler is available.

We are going to implement a C++17 file watcher that will monitor a given folder for file changes. For our limited purposes, we’ll monitor only the creation, modification and deletion of all files from the watched directory. The base folder will be checked for changes at regular time intervals and, in case of changes, we’ll run a user defined function.

Disclaimer: The code presented in this article is not meant to be used as is in production. The code was written as an exercise or demo to show what you can do with the C++17 std::filesystem library. If you want the ultimate performance, you should try to use the operating system functions like inotify on Linux or kqueue on macOS and FreeBSD.

At the time of this writing, you can use the C++17 std::filesystem library with GCC 9, Clang 7 and MSVC 2017. Here is an example of compiling a C++ program that uses std::filesystem with GCC:

Clang 8:

Clang 9 and up:

Please note that, at the time this writing, Apple’s Clang from Xcode 10 or the Command Line Tools doesn’t support the std::filesystem library. If you want to install GCC 9 on your macOS check this article.

We’ll start by writing a FileWatcher class that will check a given folder for changes at regular intervals. Here is an example of how I want to be able to use our FileWatcher class:

Let’s start by defining the list of possible file changes (creation, modification, deletion) in FileWatcher.h:

Next, we can start writing the FileWatcher class. If we want to be able to monitor what file was changed, we’ll need a way to keep a record of the existing files in the watched folder. A simple approach is to use a hash table that will have as keys the file path and as values the time of the last modification of the file. We can use a std::unordered_map to store the above:

Now, we can implement the function that will start monitoring the base folder path_to_watch for changes:

The start function will start an infinite loop in which we wait delay milliseconds and than we check for file changes. If a change is detected, we call the user defined action function that receives as parameters the file path, as a string, and the type of change detected.

Please note the contains function that checks if a given key is present in the paths_. The C++20 standard will add a contains member function to std::unordered_map, at which time you can replace line 28 from the above code with something like:

and remove our containsMac library launchagents com vsearch.agent.plist 2017. function.

At this point, FileWatcher.h is complete. Here is an example of using it to monitor the current folder for changes every five seconds:

In the above code, the user has supplied a lambda function that will be called when a file change is detected.

You can find the complete source code on the GitHub repository for this article.

Next, I will show you an example of building, running and testing the above code on my machine. I’ve used two Terminal windows, one for interacting with the program and one for file operations. Here is the first window output:

Second window output:

If you are interested to learn more about modern C++ I would recommend reading A tour of C++ by Bjarne Stroustrup.

or Effective Modern C++ by Scott Meyers.


Show Comments

Posted on May 21, 2017 by Paul

Updated 4 May 2019

In this tutorial, I will show you how to compile from source and install the current stable version of GCC with Graphite loop optimizations on your macOS computer. The instructions from this tutorial were tested with Xcode 10 and Mojave (macOS 10.14). If you are using Catalina (macOS 10.15) check this tutorial.

Clang, the default compiler for macOS, supports only C, C++, Objective-C and Objective-C++. If you are interested in a modern Fortran compiler, e.g. you will need gfortran that comes with GCC. Another reason to have the latest stable version of GCC on your macOS is that it provides you with an alternative C and C++ compiler. Testing your code with two different compilers is always a good idea.

Building GCC 9 from sources could take some time, in my case it took about two hours on a MacBook Air with a 16GB of RAM. If you want to avoid the wait time or if you have any problem building from source, you can download my binary version.

In order to compile GCC from sources you will need a working C++ compiler. In the remaining of this article I will assume that you have installed the Command Line Tools for Xcode. At the time of this writing Apple’s Command Line Tools maps the gcc and g++ to clang and clang++. If you don’t have the Command Line Tools installed, open a Terminal and write:

which will guide through the installation process.

macOS Mojave changed the location of the system headers, this broke the GCC 9 build process. In order to build GCC install the required header files in the old location:

A window should open, double click the existing pkg file, and accept the defaults. This should solve the problem of the missing header files.

Let’s start by creating a working folder: Transfer itunes library from mac to pc via ipad download.

Next, we can download and extract the latest stable version of GCC:

Mac Os 10.14 Broken C Std Library Ry Pdf

GCC 9 depends on a couple of other libraries that can be downloaded with:

We will start by compiling and installing the gmp library:

We will do the same steps for mpfr now:

Now, we are going to build mpc:

Next step is to build the library for the Graphite loop optimizations:

We are ready to compile GCC now. Be prepared that this could take more than one hour on some machines … Since I’m interested only in the C, C++ and Fortran compilers, this is the configure command I’ve used on my machine:

The above command instructs the configure app where we have installed gmp, mpfr, mpc and isl; also it tells to add a prefix to all the resulting executable programs, so for example if you will invoke GCC 9.1.0 you will write gcc-9.1, the gcc command will invoke Apple’s version of clang.

If you are interested in building more compilers available in the GCC collection modify the –enable-languages configure option.

And now, the final touches:

Grab a coffee, maybe a book, and wait … this should take approximately, depending on your computer configuration, an hour … or more … and about 5.24GB of your disk space for the build folder.

Install the compiled gcc in /usr/local/gcc-9.1:

Now, you can keep the new compiler completely isolated from your Apple’s gcc compiler and, when you need to use it, just modify your path by writing in Terminal:

If you want to avoid writing the above command each time you open a Terminal, save the above command in the file .bash_profile from your Home folder, e.g:

You should be able to invoke any of the newly compiled compilers C, C++, Fortran …, invoking g++ is as simple as writing in your Terminal:

Remember to erase the working folder from your HOME if you want to recover some space:

Next, I’ll show you how to check if the compiler was properly installed by compiling and running a few examples. GCC 9 uses by default the C++14 standard and C11 for the C coders, you should be able to compile any valid C++14 code directly. In your favorite text editor, copy and save this test program (I’ll assume you will save the file in your Home directory):

Mac Os 10.14 Broken C Std Library Reference

Compiling and running the above lambda example:

Mac Os 10.14 Broken C++ Std Library List

We could also compile a C++ code that uses threads:

Next, we present a simple C++ code that uses regular expressions to check if the input read from stdin is a floating point number:

If you are a Fortran programmer, you can use some of the Fortran 2008 features like doconcurrent with gfortran-9.1:

The above code can be compiled with (assuming you’ve named it tst_concurrent_do.f90):

If you are interested in learning more about the new C++11/C++14 syntax I would recommend reading The C++ Programming Language by Bjarne Stroustrup.

or, Professional C++ by M. Gregoire, N. A. Solter, S. J. Kleper 2nd edition:

If you need to brush your Fortran knowledge a good book is Modern Fortran Explained by M. Metcalf, J. Reid and M. Cohen:


Show Comments