<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kaori Toki</title>
    <description>The latest articles on DEV Community by Kaori Toki (@toki_915).</description>
    <link>https://dev.to/toki_915</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3833108%2F49ef6bf9-6c3d-4a41-8681-2f36ff565561.png</url>
      <title>DEV Community: Kaori Toki</title>
      <link>https://dev.to/toki_915</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/toki_915"/>
    <language>en</language>
    <item>
      <title>Installing a Niche Japanese Scientific Graph Tool on macOS Sequoia Was a Nightmare</title>
      <dc:creator>Kaori Toki</dc:creator>
      <pubDate>Mon, 20 Apr 2026 12:40:14 +0000</pubDate>
      <link>https://dev.to/toki_915/installing-a-niche-japanese-scientific-graph-tool-on-macos-sequoia-was-a-nightmare-3l94</link>
      <guid>https://dev.to/toki_915/installing-a-niche-japanese-scientific-graph-tool-on-macos-sequoia-was-a-nightmare-3l94</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;I'm a freelance web engineer, and I recently started taking university courses to level up my skills.&lt;br&gt;
One of the courses required me to use a tool called &lt;strong&gt;Ngraph-GTK&lt;/strong&gt; — a scientific graphing software that's pretty popular in Japanese universities, especially in physics, chemistry, and engineering labs.&lt;/p&gt;

&lt;p&gt;The instructions from the professor were basically: &lt;em&gt;"Windows users, download it here. Mac users... figure it out yourself."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a web engineer, I use a Mac. Pretty much every engineer I know uses a Mac.&lt;br&gt;
So I figured I'd document the pain I went through, in case any other Mac-using engineers (or students) end up in the same situation.&lt;/p&gt;

&lt;p&gt;Spoiler: it took way longer than it should have.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Ngraph?
&lt;/h2&gt;

&lt;p&gt;Ngraph is a &lt;strong&gt;2D scientific graphing tool&lt;/strong&gt; originally developed by a Japanese developer, Satoshi Ishizaka.&lt;br&gt;
It's designed for researchers, engineers, and students who need to plot data and create publication-quality graphs.&lt;/p&gt;

&lt;p&gt;Graphs can be exported in &lt;strong&gt;PostScript, SVG, PNG, and PDF&lt;/strong&gt; formats, which makes it handy for academic papers and lab reports.&lt;/p&gt;

&lt;p&gt;The GTK-based version, &lt;strong&gt;Ngraph-GTK&lt;/strong&gt;, is actively maintained on &lt;a href="https://github.com/htrb/ngraph-gtk" rel="noopener noreferrer"&gt;GitHub (htrb/ngraph-gtk)&lt;/a&gt; and runs on Linux, Windows, and macOS.&lt;/p&gt;

&lt;p&gt;Outside of Japan, it's virtually unknown — tools like gnuplot or Python's matplotlib tend to dominate internationally.&lt;br&gt;
But in Japanese universities, Ngraph is still widely used, especially in science and engineering courses.&lt;/p&gt;

&lt;p&gt;If you're a Mac user who just got told to "install Ngraph" for a class, this post is for you.&lt;/p&gt;
&lt;h2&gt;
  
  
  Environment
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;15.6.1 (Sequoia)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Xcode Command Line Tools&lt;/td&gt;
&lt;td&gt;16.4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Homebrew&lt;/td&gt;
&lt;td&gt;5.1.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ngraph-gtk&lt;/td&gt;
&lt;td&gt;6.09.11&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Where Things Went Wrong (and How I Fixed Them)
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Command Line Tools Error
&lt;/h3&gt;

&lt;p&gt;First, I ran the standard install command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;ngraph-gtk-launcher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And got hit with this right away:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Error: Xcode alone is not sufficient on Sequoia.
Install the Command Line Tools:
  xcode-select --install
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fair enough. I ran it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xcode-select &lt;span class="nt"&gt;--install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A popup appeared — clicked "Install", waited a few minutes, done.&lt;br&gt;
Then I also accepted the Xcode license, which can silently block Homebrew builds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;xcode-select &lt;span class="nt"&gt;-s&lt;/span&gt; /Applications/Xcode.app/Contents/Developer
&lt;span class="nb"&gt;sudo &lt;/span&gt;xcodebuild &lt;span class="nt"&gt;-license&lt;/span&gt; accept
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To verify the CLT is properly installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xcode-select &lt;span class="nt"&gt;-p&lt;/span&gt;
pkgutil &lt;span class="nt"&gt;--pkg-info&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;com.apple.pkg.CLTools_Executables | &lt;span class="nb"&gt;grep &lt;/span&gt;version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see &lt;code&gt;/Applications/Xcode.app/Contents/Developer&lt;/code&gt; and the version number.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. &lt;code&gt;gmake&lt;/code&gt; Not Found
&lt;/h3&gt;

&lt;p&gt;Back to the install. Same command, new error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Failed executing: gmake
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ngraph-gtk needs GNU make to build, which doesn't ship with macOS by default.&lt;br&gt;
Install it via Homebrew and add it to your PATH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;make
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH="$(brew --prefix make)/libexec/gnubin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. The &lt;code&gt;-std=gnu23"&lt;/code&gt; Quote Bug (The Real Pain)
&lt;/h3&gt;

&lt;p&gt;This is where it got interesting.&lt;/p&gt;

&lt;p&gt;Running the install again, &lt;code&gt;gmake&lt;/code&gt; failed with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;error: invalid value 'gnu23"' in '-std=gnu23"'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the stray &lt;code&gt;"&lt;/code&gt; at the end of &lt;code&gt;gnu23"&lt;/code&gt;. That's not supposed to be there.&lt;/p&gt;

&lt;p&gt;What's happening: the &lt;code&gt;configure&lt;/code&gt; script correctly sets &lt;code&gt;-std=gnu23&lt;/code&gt;, but when it gets written into &lt;code&gt;config.status&lt;/code&gt; and &lt;code&gt;libtool&lt;/code&gt;, a rogue &lt;code&gt;"&lt;/code&gt; gets appended. Every time &lt;code&gt;gmake&lt;/code&gt; runs, &lt;code&gt;config.status&lt;/code&gt; regenerates &lt;code&gt;libtool&lt;/code&gt;, so simply patching one file isn't enough — you need to fix both.&lt;/p&gt;

&lt;p&gt;First, keep the temp build directory around so we can edit it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;HOMEBREW_KEEP_TMP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 brew &lt;span class="nb"&gt;install &lt;/span&gt;ngraph-gtk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It'll fail, but the temp directory will survive.&lt;br&gt;
Check the directory name with &lt;code&gt;ls /private/tmp/&lt;/code&gt; and navigate into it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /private/tmp/ngraph-gtk-xxxxxxxxx/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now patch &lt;code&gt;config.status&lt;/code&gt; and &lt;code&gt;libtool&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
with open('config.status', 'r') as f:
    content = f.read()
content = content.replace('S[&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CC&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;]=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang -std=gnu23&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;', 'S[&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CC&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;]=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;')
with open('config.status', 'w') as f:
    f.write(content)
"&lt;/span&gt;

python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
with open('libtool', 'r') as f:
    content = f.read()
content = content.replace('CC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang -std=gnu23&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;', 'CC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;')
content = content.replace('LTCC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang -std=gnu23&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;', 'LTCC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;')
with open('libtool', 'w') as f:
    f.write(content)
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify the fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="s1"&gt;'gnu23"'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No output means you're good.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. &lt;code&gt;free_history_entry&lt;/code&gt; Undeclared Error
&lt;/h3&gt;

&lt;p&gt;Past the quote bug, the next error showed up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="nl"&gt;error:&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;undeclared&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;free_history_entry&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;macOS ships with a BSD-flavored readline library, which doesn't have &lt;code&gt;free_history_entry&lt;/code&gt;.&lt;br&gt;
The fix is straightforward — patch &lt;code&gt;src/shell.c&lt;/code&gt; directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="s1"&gt;'s/free_history_entry(entry)/free(entry)/g'&lt;/span&gt; src/shell.c
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'free_history_entry'&lt;/span&gt; src/shell.c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No output from &lt;code&gt;grep&lt;/code&gt; means the patch worked.&lt;/p&gt;

&lt;p&gt;Now build and install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gmake
&lt;span class="nb"&gt;sudo &lt;/span&gt;gmake &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it completes without errors, you're almost there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Clean Steps (TL;DR)
&lt;/h2&gt;

&lt;p&gt;Skipping all the trial and error — here's what actually works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;① Install Command Line Tools and accept the Xcode license&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xcode-select &lt;span class="nt"&gt;--install&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;xcode-select &lt;span class="nt"&gt;-s&lt;/span&gt; /Applications/Xcode.app/Contents/Developer
&lt;span class="nb"&gt;sudo &lt;/span&gt;xcodebuild &lt;span class="nt"&gt;-license&lt;/span&gt; accept
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;② Install &lt;code&gt;gmake&lt;/code&gt; and add it to PATH&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;make
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH="$(brew --prefix make)/libexec/gnubin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;③ Build ngraph-gtk, keeping the temp directory&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;HOMEBREW_KEEP_TMP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 brew &lt;span class="nb"&gt;install &lt;/span&gt;ngraph-gtk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will fail. Check the temp directory name with &lt;code&gt;ls /private/tmp/&lt;/code&gt; and navigate into it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /private/tmp/ngraph-gtk-xxxxxxxxx/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;④ Fix the quote bug&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
with open('config.status', 'r') as f:
    content = f.read()
content = content.replace('S[&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CC&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;]=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang -std=gnu23&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;', 'S[&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CC&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;]=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;')
with open('config.status', 'w') as f:
    f.write(content)
"&lt;/span&gt;

python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
with open('libtool', 'r') as f:
    content = f.read()
content = content.replace('CC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang -std=gnu23&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;', 'CC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;')
content = content.replace('LTCC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang -std=gnu23&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;', 'LTCC=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;clang&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;')
with open('libtool', 'w') as f:
    f.write(content)
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;⑤ Fix &lt;code&gt;free_history_entry&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="s1"&gt;'s/free_history_entry(entry)/free(entry)/g'&lt;/span&gt; src/shell.c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;⑥ Build and install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gmake
&lt;span class="nb"&gt;sudo &lt;/span&gt;gmake &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;⑦ Verify it works&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="si"&gt;$(&lt;/span&gt;brew &lt;span class="nt"&gt;--prefix&lt;/span&gt; ngraph-gtk&lt;span class="si"&gt;)&lt;/span&gt;/bin/ngraph
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The GUI should launch. 🎉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⑧ Add to PATH so you can just type &lt;code&gt;ngraph&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PATH="$(brew --prefix ngraph-gtk)/bin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;After all that, Ngraph-GTK is finally running on my Mac.&lt;/p&gt;

&lt;p&gt;To summarize the two root causes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The &lt;code&gt;-std=gnu23"&lt;/code&gt; quote bug&lt;/strong&gt;: a build script issue where a stray &lt;code&gt;"&lt;/code&gt; gets injected into &lt;code&gt;config.status&lt;/code&gt; and &lt;code&gt;libtool&lt;/code&gt;, causing the compiler to reject the flag on macOS Sequoia + Xcode 16.x&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;free_history_entry&lt;/code&gt; undeclared&lt;/strong&gt;: macOS uses a BSD readline library that doesn't include this function, unlike Linux&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both of these are bugs in ngraph-gtk itself, and I'm planning to report them as an issue on the &lt;a href="https://github.com/htrb/ngraph-gtk/issues" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;. Hopefully this gets fixed in a future release so nobody else has to go through this.&lt;/p&gt;

&lt;p&gt;If you're a Mac user who just wants to use Ngraph for a university course and ended up deep in build errors — I hope this saved you a few hours.&lt;/p&gt;

&lt;p&gt;Happy graphing. 📈&lt;/p&gt;

</description>
      <category>ngraph</category>
      <category>sequoia</category>
      <category>macos</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
