TCanvas doesn't show up

Try with a TApplication:

#include "TCanvas.h"
#include "TGraph.h"
#include "TApplication.h"
#include <iostream>

// g++ test.cc -o test `root-config --cflags --glibs`

int main(int argc, char* argv[])
{
  TApplication a("a", 0, 0);

  double var_x[3] = {1, 2, 3};
  double var_y[3] = {1, 2, 3};

  TCanvas *can1 = new TCanvas();
  TGraph *gr1 = new TGraph(3, var_x, var_y);
  gr1->Draw("ALP");
  gPad->Modified();
  gPad->Update();
  //can1->SaveAs("b.png");

  std::cout << "Ctrl+c or choose File->Quit ROOT from TCanvas menu to end" << std::endl;

  a.Run(kTRUE);
  return 1;
}